2010-08-11 107 views
28

有誰知道如何根據條件在SQL Server中進行計數。根據SQL Server中的條件計算

例子:

我怎樣才能做到在表名「系統」的記錄,總caseid記錄的列數?

Customer表

userid  caseid  name 
1   100  alan 
1   101  alan 
1   102  amy 
1   103  system 
1   104  ken 
1   105  ken 
1   106  system 

結果會顯示如下圖所示:

UseeID TotalcaseID TotalRecordsWithSystem 
1   7    2 
+0

爲什麼你不使用'其中name =「system''? – stomy 2017-11-07 23:50:24

回答

64

使用SUM/CASE ...

SELECT 
    COUNT(*), --total 
    SUM(CASE WHEN name = 'system' THEN 1 ELSE 0 END) --conditional 
FROM 
    myTable 
+1

哦,舊的好的SUM CASE ...總是很有幫助,總是很容易忘記。謝謝! – 2016-11-16 10:19:21

9

我覺得他想用戶ID的結果

SELECT 
    userid, 
    COUNT(*) as TotalcaseID, --total 
    SUM(CASE WHEN name = 'system' THEN 1 ELSE 0 END) as TotalRecordsWithSystem 
FROM 
    myTable 
group by userid 
2
select 
userid, 
count('x') as TotalCaseID, 
count(case when name = 'system' then 'x' else null end) as TotalRecordsWithSystem 
from CustomerTable 
group by userid