1
我需要做一週我的報告周的基礎上,但我的週數應該從本月如何將日期轉換爲週數
這裏的第一天開始就是我的樣本數據:
report_date Vol
01 nov 2014 23
03 nov 2014 34
16 nov 2014 56
30 nov 2014 44
期望輸出
Week no Vol
1 57
2 56
3 0
4 44
希望其明確
感謝
我需要做一週我的報告周的基礎上,但我的週數應該從本月如何將日期轉換爲週數
這裏的第一天開始就是我的樣本數據:
report_date Vol
01 nov 2014 23
03 nov 2014 34
16 nov 2014 56
30 nov 2014 44
期望輸出
Week no Vol
1 57
2 56
3 0
4 44
希望其明確
感謝
select to_char(report_date, 'W'), sum(vol)
from your_table
group by to_char(report_date, 'W');
W¯¯周月(1-5)第1點開始在 月的第一天,第七結束。
由於所需輸出包括「零」行,以及,假設您希望此報告在多個月的工作,以及:
WITH sample_data AS
(SELECT DATE '2014-11-01' AS report_date, 23 AS vol FROM DUAL
UNION ALL SELECT DATE '2014-11-03', 34 FROM DUAL
UNION ALL SELECT DATE '2014-11-16', 56 FROM DUAL
UNION ALL SELECT DATE '2014-11-30', 44 FROM DUAL)
,weeks AS
(SELECT report_month
,TO_CHAR(ROWNUM) AS week_no
FROM (SELECT DISTINCT
TRUNC(report_date,'MM') AS report_month
FROM sample_data)
CONNECT BY LEVEL <= TO_NUMBER(TO_CHAR(LAST_DAY(report_month),'W')))
SELECT TO_CHAR(weeks.report_month,'Month') AS "Month"
,weeks.week_no AS "Week no"
,NVL(sum(sample_data.vol),0) AS "Vol"
FROM weeks
LEFT JOIN sample_data
ON weeks.report_month = TRUNC(report_date,'MM')
AND weeks.week_no = to_char(report_date,'W')
GROUP BY weeks.report_month, weeks.week_no ORDER BY 1,2;
我們決定在每個月的週數通過使用LAST_DAY
函數來源數據,並且我們執行分層查詢(CONNECT BY LEVEL <= n
)爲每個月的每週生成一行。
預期輸出應該是:
Month Week no Vol
======== ======= ===
November 1 57
November 2 0
November 3 56
November 4 0
November 5 44
差不多:他要0空周 – 2014-12-11 03:22:10