我想询问有关如何在SQL Server上执行以下操作的任何建议
所需的输出列将是
EmpName | CompleteCalls | IncompleteCalls
基本上计算每个员工的完成呼叫和不完整呼叫的数量
当前的表结构是这样的
EmpName | Flag
位数据类型中的标志,表示完成呼叫或未完成呼叫。对于每种类型的呼叫,员工的姓名可以在不同的行中重复。 例如,员工可以在两行中同时拥有“完成”和“未完成”调用的两个标记。
现在我如何在SQL Server中执行此操作?到目前为止,我尝试了以下内容:
select EmpName,
(select count(*)
from call_log
where flag = 1
and EmpName in (select EmpName
from call_log
where flag = 1) ) AS [CompleteCalls]
FROM call_log
但是您可能会注意到,查询结果不准确,因为每个Employee将获得当前在桌面上的完整调用的总数。
TIA
答案 0 :(得分:3)
试试这个:
SELECT EmpName,
SUM(CASE WHEN Flag = 1 THEN 1 ElSE 0 END) AS COMPLETECALLS,
SUM(CASE WHEN Flag = 0 THEN 1 ElSE 0 END) AS INCOMPLETECALLS
FROM call_log
GROUP BY EmpName
表中每行的SUM 1将分别为flag = 1或flag = 0。
答案 1 :(得分:2)
select SUM(CASE WHEN Complete=1 THEN 1 ELSE 0 END) AS NumComplete
, SUM(CASE WHEN Complete=0 THEN 1 ELSE 0 END) AS NumIncomplete
, EmpName
FROM call_log
GROUP BY EmpName