0

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

温度(a1,a2)

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

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

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

4

3 回答 3

0

我会看 COALESCE 或 ISNULL 函数,如果为空,它们可以返回“零”:

于 2013-09-15T00:32:01.650 回答
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
于 2013-09-15T00:39:08.943 回答
0

如果您尝试获取 and 的所有组合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;
于 2013-09-15T15:39:24.397 回答