Sql-Server
SQL Server 的聚合函式忽略空值。我該如何糾正?
根據MS的知識庫,
除了 COUNT,聚合函式忽略空值。
有誰知道我怎樣才能讓它正常工作,也就是說,如果它嘗試與值中的 null 進行聚合,則返回 null ?
例子:
SELECT SUM("col") FROM ( SELECT NULL "col" UNION SELECT 1 "col" ) test
我希望這個查詢返回
NULL
,而不是 1。
您可以通過對查詢應用 where 子句來模擬這一點:
with test_data (col) as ( select null union all select 1 union all select 2 ) select sum(col) from test_data where not exists (select 1 from test_data where col is null);
編輯
Andriy 是對的,這也可以寫成:
with test_data (col) as ( select null union all select 1 union all select 2 ) select case when count(*) = count(col) then sum(col) else null end from test_data;