我对sql查询(oracle数据库)有一个问题。
我有两张table。一张表是“事故”,另一张表是“原因”。第二个is表有一些预定义的默认值。
- REASONS -
Reason 1
Reason 2
Reason 3
Reason 4
现在在事故表中,我们插入上表中的一些事故和原因,如下所示
- ACCIDENTS -
Accident 1 - Reason 1
Accident 2 - Reason 1
Accident 3 - Reason 4
所有我想得到的统计事故组的所有4个原因,即使一个原因不存在于事故表。在这种情况下,我想得到count=0,如下所示:
REASONS COUNT (of Accidents)
Reason 1 2
Reason 2 0
Reason 3 0
Reason 4 1
我已经尝试了不同类型的联接表,但没有得到结果,原因2和原因3,因为它们在表中不存在。每次结果是:
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 in accidents表是必需的。
1条答案
按热度按时间t8e9dugd1#
你想要一个
left join
和聚合: