如何从多行含NULL的同ID数据中提取无NULL单行聚合结果?
解决方案
因为题目明确同一id下各condition字段的非NULL值均唯一,我们可以利用SQL的聚合函数提取每个字段的唯一非NULL值——聚合函数会自动忽略NULL值,只保留有效的非NULL数据。
实现代码
SELECT id, MAX(condition_A) AS condition_A, MAX(condition_B) AS condition_B, MAX(condition_C) AS condition_C, MAX(condition_D) AS condition_D FROM tableA GROUP BY id;
原理说明
MAX()函数会忽略字段中的NULL值,仅对非NULL值计算。由于同一id下每个condition字段只有一个非NULL值,最终结果就是这个唯一的有效值。- 也可以用
MIN()函数替代MAX(),效果完全相同——毕竟每个字段只有一个非NULL值,最大值和最小值是同一个数。
内容的提问来源于stack exchange,提问作者jeyong kim
相关产品推荐
相关产品推荐

