Return 使用 COUNT(column) SQL 服务器时为 NULL 而不是 0

Return NULL instead of 0 when using COUNT(column) SQL Server

我想查询哪个 运行 很好,它做了两种类型的工作,COUNTSUM

类似于

select 
    id,
    Count (contracts) as countcontracts,
    count(something1),
    count(something1),
    count(something1),
    sum(cost) as sumCost
from 
    table
group by 
    id

我的问题是:如果给定 ID 没有合同,COUNT 将 return 0,SUMNull。我想看到 null 而不是 0

我在考虑 Count (contracts) = 0 then null else Count (contracts) end 的情况,但我不想这样做,因为我在查询中有超过 12 个计数位置,而且它有大量记录,所以我认为它可能会变慢降低查询性能。

还有其他方法可以用NULL替换0吗?

这里有三种方法:

1. (case when count(contracts) > 0 then count(contracts) end) as countcontracts
2. sum(case when contracts is not null then 1 end) as countcontracts
3. nullif(count(contracts), 0)

这三个都需要写比较复杂的表达式。然而,这真的没有那么难。只需多次复制该行,并更改每个变量的名称。或者,获取当前查询,将其放入电子表格并使用电子表格函数进行转换。然后将函数复制下来。 (电子表格对于重复的代码行来说是非常好的代码生成器。)

试试这个:

`select NULLIF ( Count(something) , 0)