use*_*674 5 sql group-by count
我有以下
WorkflowID FK_UA DateApprobation
----------- -------------------- -----------------------
1 3 NULL
2 1 NULL
3 1 NULL
4 2 2013-05-31 09:22:33.000
Run Code Online (Sandbox Code Playgroud)
我想要做的是获得一堆聚合字段。
我想获得批准的工作流、非批准的工作流、所有工作流
我知道的方式是“DateApprobation”字段是否为空或具有值。
问题是,我希望能够通过“FK_UA”对其进行分组,所以我不知道如何使用 group by 子句来拥有 3 个聚合函数 (COUNT)。
我正在寻找可以实现这一点的查询,我尝试了几个类似的案例,但它返回了一些奇怪的值。
我试过这个:
SELECT
FK_UA
,COUNT(WorkflowID) AS TOTAL
,COUNT(CASE when DateApprobation is not null then 1 else 0 end) AS APPROVED
,COUNT(CASE when DateApprobation is null then 1 else 0 end) AS NOT_APPROVED
FROM Workflow
GROUP BY
FK_UA
Run Code Online (Sandbox Code Playgroud)
但它总是为所有 3 个值返回相同的东西!
SELECT
SUM(CASE WHEN [DateApprobation] IS NOT NULL THEN 1 ELSE 0 END) as [Approbated count],
SUM(CASE WHEN [DateApprobation] IS NULL THEN 1 ELSE 0 END) as [Non-Approbated count],
COUNT(*) as [Total]
FROM YourTable
GROUP BY FK_UA
Run Code Online (Sandbox Code Playgroud)
如果我没猜错的话......