我想在具有多个条件的sql server中找到类别明智的计数 下面是表格
我想找到groupwise,checklistcode明智的状态计数 例如,组CLT具有未结状态和已关闭状态的总计数
所以输出应该如下所示
CLT |熟料运输| CL07M1 |机械要求| 4 | 1
我尝试了如下查询,
select distinct pd.GroupCode,
pd.GroupName,
pd.CheckListCode,
pd.CheckListName,
OpenTotal =
CASE WHEN pd.Status = 'Open' THEN COUNT(pd.Status)
END,
ClosedTotal =
CASE WHEN pd.Status = 'Closed' THEN COUNT(pd.Status)
END
from PunchListDetails pd
group by pd.GroupCode,
pd.GroupName,
pd.CheckListCode,
pd.CheckListName,
pd.Status;
但结果不符合我的需要。以上查询显示以下结果
这显示在两个不同的行中,但我想以汇总的形式显示它,如上所述。
答案 0 :(得分:2)
您的方法是正确的,但您(也)按状态进行分组,因此您将为每个状态获得不同的行 - 因此您将获得一行计算打开状态,另一行计算已关闭状态。< / p>
只需从pd.Status
子句的末尾删除group by
即可,您应该没问题:
select distinct pd.GroupCode,pd.GroupName,pd.CheckListCode,pd.CheckListName,
OpenTotal =
CASE WHEN pd.Status = 'Open' THEN COUNT(pd.Status)
END,
ClosedTotal =
CASE WHEN pd.Status = 'Closed' THEN COUNT(pd.Status)
END
from PunchListDetails pd
group by pd.GroupCode,pd.GroupName,pd.CheckListCode,pd.CheckListName
答案 1 :(得分:1)
你可以试试这个:
SELECT GroupCode
,GroupName
,CheckListCode
,CheckListName,
,SUM(CASE WHEN Status = 'Open' THEN 1 ELSE 0 END) as OpenTotal
,SUM(CASE WHEN Status = 'Closed' THEN 1 ELSE 0 END) as ClosedTotal
FROM PunchListDetails
GROUP BY GroupCode,GroupName,CheckListCode,CheckListName