我有以下
WorkflowID FK_UA DateApprobation
----------- -------------------- -----------------------
1 3 NULL
2 1 NULL
3 1 NULL
4 2 2013-05-31 09:22:33.000
我想要做的是获得一堆聚合字段。
我想获得批准的工作流、非批准的工作流、所有工作流
我知道的方式是“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
但它总是为所有 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
如果我猜对了你......
关于sql - 带有 group by 子句的多个聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16859016/