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
当我使用sum函数时,它返回一个值,但如果一列有空值,我希望它返回null。 这怎么可能? 提前谢谢......
答案 0 :(得分:6)
sum()
(与其他聚合函数一样)在组合来自不同行的值时忽略NULL
。您可以使用其他逻辑执行您想要的操作:
SELECT (case when count(*) = count(oran*deger)
then SUM(oran*deger/100)
end)
FROM @tablo;
构造count(*) = count(<whatever>)
是我能想到的确定值是否为NULL
的最短路径。第一部分计算组中的行数。第二个计算非NULL值的数量。如果这些不同,则某处有NULL
值。