Welcome to Sign in | Help

Re: Comparari date calendaristice

  •  10-26-2010, 11:16 AM

    Re: Comparari date calendaristice

    Eu aş face toate calculele în Transact-SQL, de exemplu (în baza de date AdventureWorks):

    DECLARE @StartDate datetime, @EndDate datetime
    SET @StartDate='20031001'
    SET @EndDate='20031231'

    SELECT * FROM (
      SELECT YEAR(OrderDate) AS YearNumber, MONTH(OrderDate) AS MonthNumber, DAY(OrderDate) AS DayNumber,
        OrderDate, WeekDayName, CurrentSales, PreviousYearDate,
        (SELECT SUM(TotalDue) FROM Sales.SalesOrderHeader WHERE OrderDate=PreviousYearDate) AS PreviousYearSales
      FROM (
        SELECT OrderDate, WeekDayName, CurrentSales,
          DATEADD(DAY,(DATEPART(WEEKDAY,OrderDate)-DATEPART(WEEKDAY,DATEADD(YEAR,-1,OrderDate))+7)%7,DATEADD(YEAR,-1,OrderDate)) AS PreviousYearDate
        FROM (
          SELECT OrderDate, DATENAME(WEEKDAY,OrderDate) AS WeekDayName, SUM(TotalDue) AS CurrentSales
          FROM Sales.SalesOrderHeader
          WHERE OrderDate BETWEEN @StartDate AND @EndDate
          GROUP BY OrderDate
        ) t1
      ) t2
      UNION ALL
      SELECT YearNumber, MonthNumber, NULL AS DayNumber, NULL AS OrderDate, NULL AS WeekDayName, CurrentSales, NULL AS PreviousYearDate,
        (SELECT SUM(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate)=YearNumber-1 AND MONTH(OrderDate)=MonthNumber) AS PreviousYearSales
      FROM (
        SELECT YEAR(OrderDate) AS YearNumber, MONTH(OrderDate) AS MonthNumber, SUM(TotalDue) AS CurrentSales
        FROM Sales.SalesOrderHeader
        WHERE OrderDate BETWEEN @StartDate AND @EndDate
        GROUP BY YEAR(OrderDate), MONTH(OrderDate)
      ) t3
    ) t4
    ORDER BY YearNumber, MonthNumber, -DayNumber DESC

    Răzvan

View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems