Я использую следующий CTE. Первая часть собирает всех уникальных людей, а вторая слева объединяет уникальных людей с событиями в течение определенного периода времени. Я ожидаю, что все строки будут возвращены из таблицы моих уникальных людей, даже если они не имеют события в течение периода времени. Но, похоже, это не так.Oracle Left Join не возвращает все строки
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 where, и я думал, что это заставляет проблему читать. – Jonnny
Переключатель LEFT JOIN to RIGHT JOIN? – jarlh