如何在含NULL值的两列中优先求和time_override列(SQL实现)
解决方案:优先使用time_override字段求和,空值时 fallback 到time字段
你需要实现的逻辑是优先取time_override字段的值进行求和,当该字段为NULL时则使用time字段的值。当前的SQL仅对time_override求和,会自动忽略NULL值(SUM函数默认跳过NULL),无法满足需求。
可以使用SQL的COALESCE函数来实现这个逻辑,它会返回传入参数中的第一个非NULL值。修改后的SQL如下:
SELECT SUM(COALESCE(t.time_override, t.time)) AS NUMBER FROM rev.TIME AS t
逻辑验证(针对你的示例数据):
- id13:time_override为空,取time字段的1.0
- id14:取time_override字段的1.0
- id15:取time_override字段的1.0
最终求和结果为1.0 + 1.0 + 1.0 = 3.0,符合优先使用time_override的要求。
内容的提问来源于stack exchange,提问作者Jeffrey Lueken
相关产品推荐
相关产品推荐

