如何查询0行的计数

时间:2013-09-15 00:24:38

标签: sql-server

我的查询是获取总行数以及列数。示例表必须是临时表:

温度(A1,A2)

我需要查询a1,a2和总行数。

SELECT COUNT(*) as TotalRow, a1, a2 from #temp group by a1,a2

该查询适用于行> = 1的表。但是,对于某些特殊情况,此表为零行。在这种情况下,TotalRow不返回值(它应该为零)。如何让查询适用于所有情况,包括零行?谢谢。

3 个答案:

答案 0 :(得分:0)

我会查看COALESCE或ISNULL函数,如果为null,则返回“零”:

答案 1 :(得分:0)

我将通过两个查询解决此问题:

IF (SELECT COUNT(*) from #temp > 0)
BEGIN
    SELECT COUNT(*) as TotalRow, a1, a2 from #temp group by a1,a2
END
ELSE
BEGIN
    SELECT 0 as TotalRow, NULL as a1, NULL as a2
END

答案 2 :(得分:0)

如果您尝试获取a1a2的所有组合,即使没有行,请尝试以下操作:

select a1.a1, a2.a2, count(t.a1) as TotalRow
from (select distinct a1 from #temp) a1 cross join
     (select distinct a2 from #temp) a2 left outer join
     #temp t
     on a1.a1 = t.a1 and a2.a2 = t.a2
group by a1, a2;