我有一個查詢,可以查看36個月的單位銷售歷史記錄。它按原樣工作,但我想知道是否有辦法使它不那麼冗長和麻煩。簡化SQL SELECT語句?
查詢有兩個部分 - 標題和數據。
以下是我對頭:
SELECT
DATEADD(m, -36, GETDATE()-day(GETDATE()-1)) AS "MM36"
, DATEADD(m, -35, GETDATE()-day(GETDATE()-1)) AS "MM35"
, DATEADD(m, -34, GETDATE()-day(GETDATE()-1)) AS "MM34"
截至今天,這是月 - 2011年它繼續至11月...
, DATEADD(m, -03, GETDATE()-day(GETDATE()-1)) AS "MM03"
, DATEADD(m, -02, GETDATE()-day(GETDATE()-1)) AS "MM02"
, DATEADD(m, -01, GETDATE()-day(GETDATE()-1)) AS "MM01"
6至8月2014年。36行代碼。是
拉單元的銷售數據報表如下:
, SUM (CASE WHEN "SalesTable"."SalesDate" BETWEEN DATEADD(m, -36, GETDATE()-day(GETDATE()-1)) AND DATEADD(m, -35, GETDATE()-day(GETDATE()-1))-1 THEN "SalesTable"."SalesQty" - "SalesTable"."ReturnsQty" ELSE NULL END) AS "NetQty36"
, SUM (CASE WHEN "SalesTable"."SalesDate" BETWEEN DATEADD(m, -35, GETDATE()-day(GETDATE()-1)) AND DATEADD(m, -34, GETDATE()-day(GETDATE()-1))-1 THEN "SalesTable"."SalesQty" - "SalesTable"."ReturnsQty" ELSE NULL END) AS "NetQty35"
, SUM (CASE WHEN "SalesTable"."SalesDate" BETWEEN DATEADD(m, -34, GETDATE()-day(GETDATE()-1)) AND DATEADD(m, -33, GETDATE()-day(GETDATE()-1))-1 THEN "SalesTable"."SalesQty" - "SalesTable"."ReturnsQty" ELSE NULL END) AS "NetQty34"
截至今天,這是月 - 2011年它繼續至11月...
, SUM (CASE WHEN "SalesTable"."SalesDate" BETWEEN DATEADD(m, -03, GETDATE()-day(GETDATE()-1)) AND DATEADD(m, -02, GETDATE()-day(GETDATE()-1))-1 THEN "SalesTable"."SalesQty" - "SalesTable"."ReturnsQty" ELSE NULL END) AS "NetQty03"
, SUM (CASE WHEN "SalesTable"."SalesDate" BETWEEN DATEADD(m, -02, GETDATE()-day(GETDATE()-1)) AND DATEADD(m, -01, GETDATE()-day(GETDATE()-1))-1 THEN "SalesTable"."SalesQty" - "SalesTable"."ReturnsQty" ELSE NULL END) AS "NetQty02"
, SUM (CASE WHEN "SalesTable"."SalesDate" BETWEEN DATEADD(m, -01, GETDATE()-day(GETDATE()-1)) AND DATEADD(m, -00, GETDATE()-day(GETDATE()-1))-1 THEN "SalesTable"."SalesQty" - "SalesTable"."ReturnsQty" ELSE NULL END) AS "NetQty01"
2014年6月 - 8月。
在完成此報表之前,我將添加更多內容,以便儘可能保持整潔。
感謝,
編輯
下面的例子說明,上面的代碼,我能得到我想要的東西(沒有代表張貼圖片,所以我不得不做鏈接)。它還表明,與透視表我缺少我的物品號碼和滾動月份。我如何添加這兩件事?
我試着去掉了「ItemTable」。「ItemNum」字段如下,但它並不在我的水晶報表顯示出來。我試圖說的任何地方,我得到「無法綁定」的錯誤。
select
[0] MM00
, [1] MM01
, [2] MM02
, ...
from (
select
"ItemTable"."ItemNum",DateDiff(m, "SalesTable"."SalesDate", GetDate()) months_ago
, "SalesTable"."SalesQty" - "SalesTable"."ReturnsQty" NetQty
from your_table
) as source
pivot
(
sum(NetQty) For months_ago in ([0], [1], [2], [3], ...)
) as PivotTable
再次感謝。
進行一個月的查詢並將其包裝在WHILE循環中,該循環的增量從1增加到36. – 2014-09-29 15:46:29