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)
小智 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)
如果您使用的是 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)