2013-05-31 35 views
3

我有以下多个集合函数by子句

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个值!

回答

2
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 

如果我得到你的权利....

+1

非常感谢。我真的有一个脑屁,混合了COUNT和SUM。 – user2440674

相关问题