0

У меня есть sql;Получить одну строку вместо двух строк данных SQL

select 
Program, 
CASE WHEN ClassMissed = 0 THEN COUNT(ClassMissed) ELSE 0 END as Completed, 
CASE WHEN ClassMissed = 1 THEN COUNT(ClassMissed) ELSE 0 END as One_Days_Missed, 
CASE WHEN ClassMissed = 2 THEN COUNT(ClassMissed) ELSE 0 END as Two_Days_Missed, 
CASE WHEN ClassMissed = 3 THEN COUNT(ClassMissed) ELSE 0 ENd as Three_Days_Missed 
from 
#temp 
group by Program,ClassMissed 

Который дает мне ниже из положить:

Program \t | Completed \t | One_Days_Missed | Two_Days_Missed |Three_Days_Missed 
 
________________________________________________________________________________ 
 
Prog1 | \t 0  |  19 \t |  0 \t  |  0 
 
Prog1 \t |  0  |  0 \t |  0 \t  |  2

Но я ожидаю ниже таблице

Program \t | Completed \t | One_Days_Missed | Two_Days_Missed |Three_Days_Missed 
 
________________________________________________________________________________ 
 
Prog1 | \t 0  |  19 \t |  0 \t  |  2

я должен сделать группу по Classmissed для выполнения запроса.

Пожалуйста, дайте мне лучшее решение для этого?

Спасибо

+0

Могли бы вы предоставить некоторые данные –

+0

образца @wewesthemenace вы сделали это .. !! Отличная работа !! –

ответ

1

Вы должны использовать SUM(CASE WHEN..END).

CREATE TABLE #Temp(
    Program  VARCHAR(20), 
    ClassMissed INT 
) 
INSERT INTO #Temp VALUES 
('Prog1', 1), ('Prog1', 1), ('Prog1', 1), 
('Prog1', 1), ('Prog1', 1), ('Prog1', 1), 
('Prog1', 1), ('Prog1', 1), ('Prog1', 1), 
('Prog1', 1), ('Prog1', 1), ('Prog1', 1), 
('Prog1', 1), ('Prog1', 1), ('Prog1', 1), 
('Prog1', 1), ('Prog1', 1), ('Prog1', 3), 
('Prog1', 1), ('Prog1', 1), ('Prog1', 3); 

SELECT 
    Program, 
    SUM(CASE WHEN ClassMissed = 0 THEN 1 ELSE 0 END) AS Completed, 
    SUM(CASE WHEN ClassMissed = 1 THEN 1 ELSE 0 END) AS One_Days_Missed, 
    SUM(CASE WHEN ClassMissed = 2 THEN 1 ELSE 0 END) AS Two_Days_Missed, 
    SUM(CASE WHEN ClassMissed = 3 THEN 1 ELSE 0 END) AS Three_Days_Missed 
FROM #Temp 
GROUP BY Program 

DROP TABLE #Temp 

РЕЗУЛЬТАТ

Program    Completed One_Days_Missed Two_Days_Missed Three_Days_Missed 
-------------------- ----------- --------------- --------------- ----------------- 
Prog1    0   19    0    2 
+0

Спасибо @wewesthemenace .. Цените это .. Это сработало для меня .. !! –

Смежные вопросы