这段代码运行良好:
select fk, max(case when 1 = 0 then 1 else null end) maxx
from (values(1, null), (1, null)) x(fk, a)
group by fk;
输出:
fk maxx
----------- -----------
1 NULL
使用:
警告:空值被汇总或其他SET操作消除。
但是这段代码:
select fk, max(a) maxx
from (values(1, null), (1, null)) x(fk, a)
group by fk;
出现错误:
Msg 8117, Level 16, State 1, Line 5
操作数数据类型 NULL 对于 max 运算符无效。
在这两种情况下,SQL Server 从 null
和 null
计算 max
?难道不是吗?
select fk, max(a) maxx from (values(1, CAST (NULL AS varchar(25)) ), (1, CAST (NULL AS varchar(25)) )) x(fk, a) group by fk;
当列的数据类型未知时,无法获取 null 的最大值。当您尝试创建一个只有 null 值的表时,它也会失败,因为数据类型再次是未知的。 - xQbert