2010-08-11 11 views
28

SQL Server'da duruma göre sayımı nasıl yapabilirim bilen var mı?SQL Server'daki koşullara göre hesap sayın

Örnek:

ben tabloda adı 'sistem' ile kayıtları ve toplam caseid kayıtları için bir sütun sayısı nasıl yapabilirim ??

Müşteri tablo sonucu aşağıda gibi görünecektir

userid  caseid  name 
1   100  alan 
1   101  alan 
1   102  amy 
1   103  system 
1   104  ken 
1   105  ken 
1   106  system 
: Bence sonuçlarında kullanıcı kimliği istediğini düşünüyorum

UseeID TotalcaseID TotalRecordsWithSystem 
1   7    2 
+0

Neden 'WHERE name = 'system'' kullanılmamalıdır? – stomy

cevap

64

Kullanım SUM/DURUM ...

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

Ah eski iyi SUM CASE ... Her zaman çok yararlı, her zaman unutmak çok kolay. Teşekkür ederim! –

9

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 
İlgili konular