3
我需要爲銷售創建每週彙總數據。其中TRNST_QTY
是最後一週的最新可用數量,PRCHS_QTY
是特定一週的購買數量的總和。我有日期維度,日期鍵和相應的星期鍵存在。使用sql的最新記錄
如果有任何一週沒有交易發生,應該採取上週TRNST_QTY
和PRCHS_QTY
將0
表1(Sales表):
DT_KEY ITEM TRNST_QTY PRCHS_QTY
20160515 4098 2 1
20160516 4098 10 1
20160601 4098 4 0
20160603 4098 8 0
20160611 4098 6 4
20160616 4098 4 0
20160622 4098 8 0
20160623 4098 2 0
20160714 4098 11 3
輸出要求(每週總計):
WK_DT_KEY ITEM TRNST_QTY PRCHS_QTY
20160521 4098 10 2
20160607 4098 8 0
20160614 4098 6 4
20160621 4098 4 0
20160630 4098 2 0
20160707 4098 2 0
20160714 4098 11 3
日期&周映射:
DT_KEY WK_DT_KEY
20160515 20160521
20160516 20160521
20160517 20160521
20160518 20160521
20160519 20160521
20160520 20160521
20160521 20160521
20160601 20160607
20160602 20160607
20160603 20160607
20160604 20160607
等
到目前爲止,我能夠在下面的查詢,但其只給最近一週的信息
select * from
(
SELECT WK_DT_KEY
,ITEM
,sum(PRCHS_QTY) OVER (
PARTITION BY WK_DT_KEY
,ITEM
ORDER BY WK_DT_KEY
,ITEM
) AS PRCHS_QTY
,ROW_NUMBER() OVER (
PARTITION BY ITEM order by a.dt_key desc
) AS RNK
FROM fct_itm a
,DIM_DT DIM_DT
WHERE a.dt_key <= '20170207'
AND DIM_DT.DT_key = a.dt_key
)
where RNK = 1;
我想避免程序方法或通過條款連接。 我將不勝感激任何幫助。
添加vkp的註釋:使用DATE數據類型!!! – BobC
@vkp謝謝! 。有幾個星期我沒有交易。我也需要得到那一週的數據。例如,「20160707」周內的任何交易都將進行任何交易,因此應從「20160630」周開始選擇trnst_qty,而「PRCHS_QTY」爲零。 – luminita
如果有兩週或更長時間缺失值,該怎麼辦?是否應該從最近的可用一週中提取這些值? –