我有这个Oracle SQL语句来获取最早的3个日期:
SELECT LEAST(DATE_1,DATE_2,DATE_3) FROM MYTABLE
但是,如果其中一个日期为NULL,则无论其他日期是否为NULL,整个LEAST函数都将返回NULL。我想获取三个日期中最早的日期,但忽略任何NULL日期,以便LEAST唯一的时间返回NULL是所有三个日期都为NULL。
我也不能让函数返回错误的日期,所以这将不工作:
SELECT LEAST(NVL(DATE_1,SYSDATE),NVL(DATE_2,SYSDATE),NVL(DATE_3,SYSDATE)) FROM MYTABLE
最干净的方法是什么?
答案 0 :(得分:6)
这是一种方式:
SELECT LEAST(COALESCE(DATE_1, DATE_2, DATE_3),
COALESCE(DATE_2, DATE_1, DATE_3),
COALESCE(DATE_3, DATE_2, DATE_1)
)
FROM MYTABLE
答案 1 :(得分:1)
这个怎么样?
viz.js
唯一的缺点是,如果所有三个都为NULL,则返回9999-01-01而不是NULL。