给出以下查询:
SELECT dbo.ClientSub.chk_Name as Details, COUNT(*) AS Counts
FROM dbo.ClientMain
INNER JOIN
dbo.ClientSub
ON dbo.ClientMain.ate_Id = dbo.ClientSub.ate_Id
WHERE chk_Status=1
GROUP BY dbo.ClientSub.chk_Name
即使在WHERE子句中有过滤,我也希望显示聚合中的行。
答案 0 :(得分:0)
如果你使用oracle sql:
您是否尝试过Select nvl(dbo.ClientSub.chk_name,'0') ....
?
答案 1 :(得分:0)
SELECT
dbo.ClientSub.chk_Name as Details,
SUM(CASE WHEN ISNULL(dbo.ClientSub.chk_Name, '')<>'' then 1 else 0 end) AS Counts
FROM
dbo.ClientMain INNER JOIN dbo.ClientSub ON dbo.ClientMain.ate_Id = dbo.ClientSub.ate_Id
where chk_Status=1
group by dbo.ClientSub.chk_Name
答案 2 :(得分:0)
我希望您使用的是Oracle。您可以直接使用count(chk_name)。在计数中传递列名会忽略空值。上面的查询返回每个chk_name组的记录总数。当您使用count(chk_name)时,它将计算chk_name不为空的所有记录。
我希望能回答你的问题。
谢谢,
阿迪蒂亚
答案 3 :(得分:0)
NULL
值被视为零以用于聚合目的。
出于您的意图,您应该使用GROUP BY ALL
来返回已过滤的行,其中零作为聚合值。