2012-12-17 71 views
1

我想結合以下兩個查詢,這樣我最終有三列:RelativePath,field = 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); 

回答

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); 
+1

可能在第二個CASE語句中需要「AND FIELD <>」'「」。 – MikeSmithDev