【发布时间】:2020-11-24 21:15:00
【问题描述】:
我对 SQL 查询(Oracle 数据库)有疑问。
我有两张桌子。一张是“ACCIDENTS”,另一张是“REASONS”。第二个是表有一些预定义的默认值。
- REASONS -
Reason 1
Reason 2
Reason 3
Reason 4
现在在 ACCIDENTS 表中,我们插入上一个表中的一些事故和原因,如下所示
- ACCIDENTS -
Accident 1 - Reason 1
Accident 2 - Reason 1
Accident 3 - Reason 4
即使在 ACCIDENTS 表中不存在一个原因,我也想获得所有 4 个原因的 GROUP BY 事故计数。在这种情况下,我希望 Count = 0 如下所示:
REASONS COUNT (of Accidents)
Reason 1 2
Reason 2 0
Reason 3 0
Reason 4 1
不成功我已经尝试了不同类型的 JOIN 表,但我没有得到原因 2 和原因 3 的结果,因为它们在 ACCIDENTS 表中不存在。每次结果都是:
REASONS COUNT (of Accidents)
Reason 1 2
Reason 4 1
任何解决方案/想法?
提前致谢!
更新!
这是查询:
SELECT R.REASON_NAME AS REASON, COUNT(A.ID) AS COUNT_OF_ACCIDENTS
FROM ACCIDENTS A
RIGHT JOIN REASONS R ON R.ID = A.REASON_ID
WHERE EXTRACT(YEAR FPOM A.DATE_OF_ACCIDENT) = 2017
GROUP BY R.REASON_NAME
如果我删除 WHERE 语句,那么我会正确获取所有原因,但事故表中的 Where for Year 是强制性的。
【问题讨论】:
-
看起来您只是想要一个外部联接,但请编辑您的问题以显示当前查询。包含一个您尝试过的不同类型的连接可能会有所帮助,这样我们就可以看到您哪里出错了。
-
用我的查询更新了我的问题