5

私は次のものを持っています

WorkflowID  FK_UA                DateApprobation
----------- -------------------- -----------------------
1           3                    NULL
2           1                    NULL
3           1                    NULL
4           2                    2013-05-31 09:22:33.000

私がやろうとしているのは、たくさんの集計フィールドを取得することです。

承認されたワークフロー、承認されていないワークフロー、すべてのワークフローを取得したい

私が知っている方法は、「DateApprobation」フィールドが null であるか、値があるかどうかです。

問題は、「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 つの値すべてに対して常に同じものを返します。

4

2 に答える 2

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 

私があなたを正しく理解していれば....

于 2013-05-31T14:03:46.323 に答える