Sql 在数据透视表中选择最近12周的销售额

Sql 在数据透视表中选择最近12周的销售额,sql,sql-server,Sql,Sql Server,下面的查询正在生成数据,但仅返回值的周数是过去四个月中的第10、11、12周。我需要能够获得过去12周的周数,即枢轴部分中使用的第10、11、12、13、14、15、16、17、18、19、20、21、22周数,但dateadd(week,-1,invoicedate)之类的公式不起作用 我正在使用SQLServer2008R2 谢谢 SELECT productid, [1] AS 'This Week', [2] AS 'Last Week', [3] AS '

下面的查询正在生成数据,但仅返回值的周数是过去四个月中的第10、11、12周。我需要能够获得过去12周的周数,即枢轴部分中使用的第10、11、12、13、14、15、16、17、18、19、20、21、22周数,但dateadd(week,-1,invoicedate)之类的公式不起作用

我正在使用SQLServer2008R2

谢谢

SELECT productid, 
   [1]  AS 'This Week', 
   [2]  AS 'Last Week', 
   [3]  AS 'Week -3', 
   [4]  AS 'Week -4', 
   [5]  AS 'Week -5', 
   [6]  AS 'Week -6', 
   [7]  AS 'Week -7', 
   [8]  AS 'Week -8', 
   [9]  AS 'Week -9', 
   [10] AS 'Week -10', 
   [11] AS 'Week -11', 
   [12] AS 'Week -12' 
FROM   (SELECT productid, 
           qtyinvoiced, 
           Datepart(week, invoicedate) AS Tweek 
    FROM   dbo.invoicedetail 
    WHERE  invoicedate > Dateadd(m, -4, CURRENT_TIMESTAMP)) source 
   PIVOT ( Sum(qtyinvoiced) 
         FOR tweek IN ( [1], 
                        [2], 
                        [3], 
                        [4], 
                        [5], 
                        [6], 
                        [7], 
                        [8], 
                        [9], 
                        [10], 
                        [11], 
                        [12] ) ) AS pvtmonth 
而不是使用

DATEPART(week, Invoicedate)  as Tweek
你可以用

-DATEDIFF(WEEK, CURRENT_TIMESTAMP, InvoiceDate) AS Tweek
这将给出现在和发票日期之间的周数差,而不是发票日期的周数