DECLARE @tablo TABLE (oran INT,deger INT)
INSERT INTO @tablo
SELECT 10,NULL
UNION ALL
SELECT 10,20
SELECT oran*deger/100 FROM @tablo
SELECT SUM(oran*deger/100) FROM @tablo
SELECT NULL+2
Run Code Online (Sandbox Code Playgroud)
当我使用sum函数时它返回一个值但是如果一个列有一个空值,我希望它返回null.这怎么可能?提前致谢...
sum()(与其他聚合函数一样)NULL在组合来自不同行的值时忽略s.您可以使用其他逻辑执行所需操作:
SELECT (case when count(*) = count(oran*deger)
then SUM(oran*deger/100)
end)
FROM @tablo;
Run Code Online (Sandbox Code Playgroud)
构造count(*) = count(<whatever>)是我能想到的确定值是否是最短的方法NULL.第一部分计算组中的行数.第二个计算非NULL值的数量.如果这些不同,那么NULL某处就有价值.