2014-11-22 3 views
0

Я имею следующую таблицу SQL Server:SQL Server Cross Регистрация Query

Machine | Result 
----------------- 
M2  | 0 
M1  | 1 
M3  | 0 
M1  | 1 
M2  | 1 
M1  | 0 
M2  | 0 
M1  | 1 
M3  | 0 
M1  | 1 
M3  | 0 

Мне нужно, чтобы получить такой отчет:

Machine | Count 0's | Count 1's 
-------------------------------- 
M1  | 1  | 4 
M2  | 2  | 1 
M3  | 3  | 0 

Я попробовал следующий запрос, не Sucess:

SELECT A, B 
FROM 
(SELECT COUNT(*) as A 
FROM MY_TABLE 
WHERE Result = 0) 
GROUP BY Machine) a 
CROSS JOIN 
(SELECT COUNT(*) as B 
FROM MY_TABLE 
WHERE Result = 1) 
GROUP BY Machine) b 

Помогите мне ?. Заранее спасибо!

ответ

2

Вы можете сделать это с помощью условной агрегации:

select machine, 
     sum(case when result = 0 then 1 else 0 end) as num_0, 
     sum(case when result = 1 then 1 else 0 end) as num_1 
from my_table 
group by machine; 
+0

Спасибо, отлично работает! – user3658439