Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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
PL-SQL-提取所有月份的查询_Sql_Oracle - Fatal编程技术网

PL-SQL-提取所有月份的查询

PL-SQL-提取所有月份的查询,sql,oracle,Sql,Oracle,我踩到了什么东西。我有任务表,每个月都有任务安排。所以有一个日期栏。我想获得每月的关税计数。这是我的提取查询和结果视图: SELECT EXTRACT (MONTH FROM DUTY_DATE) "Month", COUNT(*) "Count" FROM DUTY_DATES WHERE EXTRACT(YEAR FROM DUTY_DATE) = EXTRACT(YEAR FROM SYSDATE) GROUP BY EXTRACT(MON

我踩到了什么东西。我有任务表,每个月都有任务安排。所以有一个日期栏。我想获得每月的关税计数。这是我的提取查询和结果视图:

SELECT EXTRACT (MONTH FROM DUTY_DATE) "Month", COUNT(*) "Count" 
 FROM DUTY_DATES WHERE EXTRACT(YEAR FROM DUTY_DATE) = EXTRACT(YEAR FROM SYSDATE) 
  GROUP BY EXTRACT(MONTH FROM DUTY_DATE) ORDER BY "Month" ASC;


但问题是;如果某个月不上班,我就不能吵架。对于ex,您可以看到没有Jan行,因为没有安排在Jan的任务。但我希望使用count:0列获取它因此,简而言之,我的目标是:一年中每个月都要计数。我的结果表每次必须有12行。提前感谢。

您可以构建一个包含所有月份的表,然后在外部联接中使用您的表:

SELECT all_months.month "Month", COUNT(DUTY_DATES.DUTY_DATE) "Count"
FROM (    SELECT LEVEL AS month
            FROM DUAL
      CONNECT BY LEVEL <= 12) all_months
     LEFT OUTER JOIN DUTY_DATES
         ON (    all_months.month = EXTRACT(MONTH FROM DUTY_DATE)
             AND EXTRACT(YEAR FROM DUTY_DATE) = EXTRACT(YEAR FROM SYSDATE))
GROUP BY all_months.month
ORDER BY "Month" ASC;
你的询问会给你答案

     Month      Count
---------- ----------
         1          1
         2          2
而我的建议将提供:

     Month      Count
---------- ----------
         1          1
         2          2
         3          0
         4          0
         5          0
         6          0
         7          0
         8          0
         9          0
        10          0
        11          0
        12          0

12 rows selected.

好几个月了,我都没听说过。好的,看起来不错,但有一个问题,我的第一排是:1-1,但2017年1月没有安排值日。我查了两次。可能有什么问题?我很困惑,听起来很奇怪。你能构建一个测试用例来检查这种行为吗?我已经构建了一个类似于你的测试用例,它运行良好。我不知道我原来的桌子会发生什么,但我想我应该继续做下去。您的解决方案非常有效,这就是这个问题的答案,谢谢:)
     Month      Count
---------- ----------
         1          1
         2          2
         3          0
         4          0
         5          0
         6          0
         7          0
         8          0
         9          0
        10          0
        11          0
        12          0

12 rows selected.