我正在使用以下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