根据SQL Server中的条件计数

Jin*_*ong 43 sql t-sql sql-server

有谁知道如何根据条件在SQL Server中进行计数.

例:

如何为名为"system"的记录和表中的总CaseID记录执行列计数?

客户表

UserID     CaseID     Name
1          100        alan
1          101        alan
1          102        amy
1          103        system
1          104        ken
1          105        ken
1          106        system  
Run Code Online (Sandbox Code Playgroud)

结果将如下所示:

UserID    TotalCaseID    TotalRecordsWithSystem
1         7              2
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 106

使用SUM/CASE ......

SELECT
    COUNT(*),  --total
    SUM(CASE WHEN name = 'system' THEN 1 ELSE 0 END) --conditional
FROM
    myTable
Run Code Online (Sandbox Code Playgroud)

  • 哦老好的SUM案例......总是那么有帮助,总是那么容易忘记.谢谢! (2认同)

小智 11

我认为他想在结果中使用用户ID

SELECT 
    userid,
    COUNT(*) as TotalcaseID, --total 
    SUM(CASE WHEN name = 'system' THEN 1 ELSE 0 END) as TotalRecordsWithSystem  
FROM 
    myTable 
group by userid
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 9

如果您使用的是 SQL Server 2012+,那么您可以使用SUM/IIF

SELECT
    COUNT(*) AS Total,
    SUM(IIF(Name = 'system', 1, 0)) AS SystemTotal
FROM
    CustomerTable
Run Code Online (Sandbox Code Playgroud)


小智 5

select
userid,
count('x') as TotalCaseID,
count(case when name = 'system' then 'x' else null end) as TotalRecordsWithSystem
from CustomerTable
group by userid
Run Code Online (Sandbox Code Playgroud)