Я пытаюсь отфильтровать результаты, которые были добавлены конкретным пользователем, сохраняя каждый день, поскольку этот запрос будет использоваться для диаграммы в отчете. Когда я удаляю t2.createdBy <> 21
, я получаю все даты, но мне также нужны результаты для фильтрации, чтобы это было правильно.T-SQL: как сохранить левое соединение, но запрос фильтра
Запрос:
SELECT
t1.DateFull, COUNT(t2.ContainerWashedDate) as Washes
FROM
DateLookup t1
LEFT JOIN
factContainerWash t2 ON t1.Datefull = t2.ContainerWashedDate
WHERE
(t1.DateFull >= '10/5/2016')
AND (t1.DateFull <= '11/9/2016')
AND t2.createdBy <> 21
GROUP BY
t1.DateFull
ORDER BY
DateFull
Результаты:
DateFull | Washes
-------------------------+-------
2016-10-05 00:00:00.000 | 1231
2016-10-06 00:00:00.000 | 466
2016-10-10 00:00:00.000 | 84
2016-10-12 00:00:00.000 | 75
Ожидаемые результаты:
DateFull | Washes
-------------------------+-------
2016-10-05 00:00:00.000 | 1231
2016-10-06 00:00:00.000 | 466
2016-10-07 00:00:00.000 | 655
2016-10-08 00:00:00.000 | 23
Но 'createdBy' ** не может ** быть 21, если его вообще нет. У вас есть логическая проблема, с которой вам нужно справиться в первую очередь. – Amit