Sql null的组计数始终为0(零)
在TSql中,建议使用什么方法对包含空值的数据进行分组 查询类型的示例:Sql null的组计数始终为0(零),sql,tsql,Sql,Tsql,在TSql中,建议使用什么方法对包含空值的数据进行分组 查询类型的示例: Select Group, Count([Group]) From [Data] Group by [Group] 似乎计数(*)和计数(组)都会导致空组显示0 预期表数据的示例: Id, Group --------- 1 , Alpha 2 , Null 3 , Beta 4 , Null 预期结果的示例: Group, Count --------- Alpha, 1 Beta, 1 Null, 0 这
Select Group, Count([Group])
From [Data]
Group by [Group]
似乎计数(*)和计数(组)都会导致空组显示0
预期表数据的示例:
Id, Group
---------
1 , Alpha
2 , Null
3 , Beta
4 , Null
预期结果的示例:
Group, Count
---------
Alpha, 1
Beta, 1
Null, 0
这是可通过计数(Id)获得的期望结果这是获得此结果的最佳方法吗?为什么count(*)和count(Group)返回“不正确”的结果?
Group, Count
---------
Alpha, 1
Beta, 1
Null, 2
编辑:我不记得为什么我认为count(*)会这样做,这可能是我正在寻找的答案。count(*)
应该有效:
SELECT Grp,COUNT(*)
FROM tab
GROUP BY Grp
另一个解决方案可以是:
SELECT Grp, COUNT(COALESCE(Grp, ' '))
FROM tab
GROUP BY Grp
下面是代码,请尝试一下
Select Group, Count(isNull(Group,0))
From [Data]
Group by [Group]
照办
SELECT [group], count([group])
GROUP BY [group]
Count(id)没有给出问题中提到的预期结果。为组NULL指定值2最佳方法是使用count(*),其行为与count(1)或任何其他常量完全相同 *将确保对每一行进行计数
Select Group, Count(*)
From [Data]
Group by [Group]
在这种情况下,之所以
null
显示0
而不是2,是因为每个单元格都计为1或null,并且null+null=null
因此该组的总数也将为null。但是,列类型是一个整数,因此它显示为0
这行吗<代码>选择组,计数(IsNull([Group],1))@Nilesh如果我想做,我可以做计数(1)是的,你也可以做计数(1):)我想你知道这里需要的所有东西,那么你为什么要问这个问题?@Hamidreza你知道如何写一个问题,你在写的时候就知道了。