1

次の 2 つのクエリを組み合わせて、最終的に 3 つの列になるようにします: RelativePath、フィールド = null/空の文字列、値を持つフィールド。クエリを個別に実行することはできますが、それらを組み合わせることができません。

SELECT RELATIVEPATH, COUNT(RELATIVEPATH) FROM APP 
       WHERE (FIELD IS NULL) OR (FIELD = '')
       GROUP BY (RELATIVEPATH);

SELECT RELATIVEPATH, COUNT(RELATIVEPATH) FROM APP
       WHERE (FIELD IS NOT NULL) 
       GROUP BY (RELATIVEPATH);
4

1 に答える 1

7

case次のステートメントが必要です。

SELECT RELATIVEPATH, sum(case when (FIELD IS NULL) OR (FIELD = '') then 1 else 0 end),
       sum(case when field is not null then 1 else 0 end)
FROM APP 
GROUP BY (RELATIVEPATH);

count(RelativePath)これは、 の意図がすべての行をカウントすることであると想定しています。列の NULL 以外の値を本当にカウントしたい場合は、次を使用します。

SELECT RELATIVEPATH, count(case when (FIELD IS NULL) OR (FIELD = '') then RelativePath end),
       count(case when field is not null then RelativePath end)
FROM APP 
GROUP BY (RELATIVEPATH);
于 2012-12-17T18:46:04.447 に答える