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.