#sql #join #group-by
#sql #Присоединиться #группировать по
Вопрос:
Name Status
A Fail
B open
c fail
A Success
A open
A Success
Я хочу выводить как,
Name S_open S_Success S_All
A 1 2 4
B 1 0 1
C 0 0 1
Ответ №1:
Попробуйте так
SELECT Name,
SUM(CASE WHEN Status='open' THEN 1 END) AS S_open,
SUM(CASE WHEN Status='Success' THEN 1 END) AS S_Success,
SUM(1) AS S_All
FROM Table
GROUP BY Name;
Ответ №2:
вы также можете попробовать это;
SELECT
upper(name),
SUM(S_OPEN) S_open,
SUM(S_SUCCESS) S_Success,
count(*) S_All
FROM
(
select name,
CASE WHEN upper(status) = 'OPEN' THEN 1 ELSE 0 END S_OPEN,
CASE WHEN upper(status) = 'SUCCESS' THEN 1 ELSE 0 END S_SUCCESS
from TABLE
) t
GROUP BY upper(name) order by 1