@googlgan

Как сделать left join, если во второй таблице есть условие, которое убирает позиции из первой таблицы?

Есть 2 таблицы. Допустим первая таблица с артикулами. Есть вторая таблица с артикулы/продажи/дата. Суть в том, что мне нужно к первой таблицы подтянуть сумму продаж из второй таблицы от определенной даты.

Если я делаю left join без условия ограничения дат во второй таблице. То всё работает хорошо. Если были продажи он их показывает. Если нет артикула во второй таблице то выдаёт Null. Всё как мне и нужно. Но если я поставлю условие, что во второй таблицы дата >. То уже артикулы, которые есть в первой таблице не показываются т.к. во второй таблице есть условие дата >. Как мне сделать запрос так, чтобы все артикулы из первой таблицы остались. А продажи суммировались с определенной даты.

SELECT t1.art,  sum(t2.sales) FROM table1 as t1 
LEFT JOIN table2 as t2
ON t1.art = t2.art
WHERE t2.date > CONVERT(DATE,'01.01.2021')
GROUP BY t1.art


Так вот из выборки пропадают артикулы , которых нет в таблице 2 но есть в таблице 1. Если убрать условие > даты. Тогда артикулы будут и сумма продаж будет NULL. Как сделать так, чтобы было тоже самое но с условием?
  • Вопрос задан
  • 153 просмотра
Решения вопроса 2
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Написать нужное условие в ON
Ответ написан
@pulsework
SELECT t1.art,

sum(
case when t2.date > CONVERT(DATE,'01.01.2021') then t2.sales else NULL end
) as Условие1,
sum(
case when t2.date < CONVERT(DATE,'02.02.1989') then t2.sales else NULL end
) as Условие2

FROM table1 as t1
LEFT JOIN table2 as t2
ON t1.art = t2.art
GROUP BY t1.art
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы