我的查询是获取总行数以及列数。示例表必须是临时表:
我需要查询a1,a2和总行数。
SELECT COUNT(*) as TotalRow, a1, a2 from #temp group by a1,a2
该查询适用于行> = 1的表。但是,对于某些特殊情况,此表为零行。在这种情况下,TotalRow
不返回值(它应该为零)。如何让查询适用于所有情况,包括零行?谢谢。
答案 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)
如果您尝试获取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;