我的查询是获取总行数以及列数。一个必须是临时表的示例表是:
温度(a1,a2)
我需要查询 a1、a2 和总行数。
SELECT COUNT(*) as TotalRow, a1, a2 from #temp group by a1,a2
该查询适用于行 >=1 的表。但是,对于某些特殊情况,该表的行数为零。在这种情况下,TotalRow
不返回值(它应该为零)。如何使该查询适用于包括零行在内的所有情况?谢谢。
我的查询是获取总行数以及列数。一个必须是临时表的示例表是:
我需要查询 a1、a2 和总行数。
SELECT COUNT(*) as TotalRow, a1, a2 from #temp group by a1,a2
该查询适用于行 >=1 的表。但是,对于某些特殊情况,该表的行数为零。在这种情况下,TotalRow
不返回值(它应该为零)。如何使该查询适用于包括零行在内的所有情况?谢谢。
我会看 COALESCE 或 ISNULL 函数,如果为空,它们可以返回“零”:
我会用两个查询来解决这个问题:
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
如果您尝试获取 and 的所有组合a1
,a2
即使没有行,请尝试以下操作:
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;