1

我想结合以下两个查询,最终得到三列:RelativePath、field = null/empty string、field with value。我可以单独执行查询,但在组合它们时遇到了麻烦。

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 回答