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

Bur*_*rak 3 sql t-sql 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
Run Code Online (Sandbox Code Playgroud)

当我使用sum函数时它返回一个值但是如果一个列有一个空值,我希望它返回null.这怎么可能?提前致谢...

Gor*_*off 6

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某处就有价值.