#sql #sql-server
#sql #sql-сервер
Вопрос:
У меня есть две таблицы:
Альфа-таблица:
ID | Name
---------
1 | A
2 | B
3 | C
Бета-версия таблицы:
ID | state
----------
1 | 1
1 | 2
1 | 2
2 | 1
Я хотел бы получить результат, подобный следующему:
ID | Count(state=1) | Count (state=2)
-------------------------------------
1 | 1 | 2
2 | 1 | 0
3 | 0 | 0
Как мне это сделать с помощью SQL?
Я могу получить таблицу без результата ID 3, но это не то, что я хочу.
Заранее спасибо!
Ответ №1:
SELECT a.ID,
SUM(CASE WHEN b.state = 1 THEN 1 ELSE 0 END) AS State1Count,
SUM(CASE WHEN b.state = 2 THEN 1 ELSE 0 END) AS State2Count
FROM alpha a
LEFT JOIN beta b
ON a.ID = b.ID
GROUP BY a.ID
Комментарии:
1. Спасибо. Ключевое слово LEFT — это ответ!