Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何将日期转换为周数_Oracle_Date_Plsql_Week Number - Fatal编程技术网

Oracle 如何将日期转换为周数

Oracle 如何将日期转换为周数,oracle,date,plsql,week-number,Oracle,Date,Plsql,Week Number,我需要每周做报告,但我的周数应该从每月的第一天开始 以下是我的示例数据: 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

我需要每周做报告,但我的周数应该从每月的第一天开始

以下是我的示例数据:

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周(1-5),其中第1周从每月的第一天开始 本月7日结束


由于您期望的输出也包括“零”行,并且假设您希望此报告也能跨多个月工作:

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;

几乎是:他想在空的几周里得到0
Month    Week no Vol
======== ======= ===
November 1        57
November 2         0
November 3        56
November 4         0
November 5        44