汇总列时如何获取空值具有空值

时间:2014-06-05 12:03:28

标签: sql tsql sum

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。 这怎么可能? 提前谢谢......

1 个答案:

答案 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值。