SQL - несколько условий для одного столбца, вывод в разные столбцы
Есть два запроса, которые нужно объединить в один
SELECT otdel, COUNT(id_task )as c1 FROM `task` WHERE status_task=0 GROUP BY otdel ORDER BY otdel
и
SELECT otdel, COUNT(id_task )as c2 FROM `task` WHERE status_task=2 GROUP BY otdel ORDER BY otdel
В результате должна получиться таблица:
| otdel | c1 | c2 |
|---|---|---|
| 1 | 5 | Null |
| 2 | 2 | 3 |
| 3 | Null | 3 |
Вместо Null можно 0. Заранее спасибо.
Ответы (2 шт):
Автор решения: Герман Борисов
→ Ссылка
Стандартный прием «Разворот CASE'ом»
SELECT
otdel,
SUM(CASE WHEN status_task=0 THEN 1 END) AS c1,
SUM(CASE WHEN status_task=2 THEN 1 END) AS c2
FROM `task`
GROUP BY otdel
ORDER BY otdel
В некоторых СУБД для этого есть отдельная команда PIVOT
Автор решения: Alex Khvostyak
→ Ссылка
Вот такое решение получилось, всем спасибо!
SELECT otdel,
COUNT(CASE
WHEN status_task = 0
THEN status_task
ELSE NULL
END) as status0,
COUNT(CASE
WHEN status_task = 2
THEN status_task
ELSE NULL
END) as status2
FROM `task`
GROUP BY otdel
ORDER By otdel