我正在使用以下CTE。第一部分收集所有独特的人,第二部分在特定的时间框架内加入独特的人与事件。我期望所有的行都会从我的唯一人员表中返回,即使他们在时间范围内没有事件。但这似乎并非如此。Oracle左连接不返回所有行
WITH DISTINCT_ATTENDING(ATTENDING) AS
(
SELECT DISTINCT ATTENDING
FROM PEOPLE
WHERE ATTENDING IS NOT NULL
), -- returns 62 records
EVENT_HISTORY(ATTENDING, TOTAL) AS
(
SELECT C.ATTENDING,
COUNT(C.ID)
FROM DISTINCT_ATTENDING D
LEFT JOIN PEOPLE C
ON C.ATTENDING = D.ATTENDING
AND TO_DATE(C.DATE, 'YYYYMMDD') < TO_DATE('20140101', 'YYYYMMDD')
GROUP BY C.ATTENDING
ORDER BY C.ATTENDING
)
SELECT * FROM EVENT_HISTORY; -- returns 49 rows
我在这里做错了什么?
如果您删除'AND TO_DATE(C.DATE,'YYYYMMDD')
@vkp我得到62行返回。起初,我在那里有一个where子句,并认为这是导致问题的原因。 – Jonnny
将LEFT JOIN切换到右连接? – jarlh