我搜索到的每一个关于警告的问题
警告: Null值由聚合操作或其他设置操作消除。
通常,人们希望将空值视为0。相反,如何修改以下存储过程,使其返回NULL而不是1?
CREATE PROCEDURE TestProcedure
AS
BEGIN
select cast(null as int) as foo into #tmp
insert into #tmp values (1)
select sum(foo) from #tmp
END
GO我认为应该是SET ANSI_NULLS ON (我在声明之前、在过程本身以及在执行测试查询中的过程之前都试过了),但这似乎并没有改变SUM(的行为。
发布于 2014-03-03 22:01:42
只管说
select case sign(sum(case when foo is null then 1 else 0 end))
when 1 then null
else sum(foo)
end
from some_table
...
group by
...这就是你所需要的。
https://stackoverflow.com/questions/22158154
复制相似问题