Объединение таблиц, подсчет на основе значения в столбце

#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 — это ответ!