我有三个日期数据a,日期b和日期main。所有的 TIMESTAMP 输出值如下2018-06-20 11:11:20。有时date\u a或date\u b为空,date\u main始终存在(不为空)。为什么在尝试使用greatest()比较它们时,它会输出空白(null)值“”?
TIMESTAMP
GREATEST(MAX(l.date_a),MAX(r.date_b),p.date_main) AS date,
8cdiaqws1#
你可以用 COALESCE 处理 NULL 每个可为null的列的值:
COALESCE
NULL
GREATEST(COALESCE(MAX(l.date_a), '1900-01-01'), COALESCE(MAX(r.date_b), '1900-01-01'), p.date_main )AS date
因为你想要最大的价值,我愿意交换 NULL 具有过去的某个日期(任意值)。
wj8zmpe12#
如果 p.date_main 永远不会 NULL ,我将使用:
p.date_main
GREATEST(COALESCE(MAX(l.date_a), p.date_main), COALESCE(MAX(r.date_b), p.date_main), p.date_main ) AS date, ``` `GREATEST()` 以及 `LEAST()` (不像 `MIN()` 以及 `MAX()` )返回 `NULL` 如果任何一个论点 `NULL` . 所以,如果一个组中的所有值 `NULL` ,那么 `MIN()` 以及 `MAX()` 返回 `NULL` . 这个 `COALESCE()` 将值替换为 `p.date_main` 为了最大价值的比较。
2条答案
按热度按时间8cdiaqws1#
你可以用
COALESCE
处理NULL
每个可为null的列的值:因为你想要最大的价值,我愿意交换
NULL
具有过去的某个日期(任意值)。wj8zmpe12#
如果
p.date_main
永远不会NULL
,我将使用: