我想获取修改记录的最后日期。这是一个简单的SELECT示例:
SELECT
t01.name,
t01.last_upd date1,
t02.last_upd date2,
t03.last_upd date3,
'maxof123' maxdate
FROM
s_org_ext t01,
s_org_ext_x t02,
s_addr_org t03
WHERE
t02.par_row_id(+)= t01.row_id and
t03.row_id(+)= t01.pr_addr_id and
t01.int_org_flg = 'n';
如何获取maxdate列以显示三个日期的最大值?
注意:没有UNION或子/嵌套SELECT语句;)
答案 0 :(得分:11)
最大(t01.last_upd,t02.last_upd date2,t03.last_upd)为maxdate
答案 1 :(得分:2)
在SELECT子句中使用CASE语句执行以下操作:
CASE WHEN date1 > date2 AND date1 > date3 THEN date1 WHEN date2 > date3 THEN date2 ELSE date3 END AS maxdate
一旦满足第一个条件,它就会突破逻辑。
答案 2 :(得分:0)
使用GREATEST
函数,也使用显式连接而不是隐式连接。
SELECT t01.name, t01.last_upd date1, t02.last_upd date2, t03.last_upd date3,
GREATEST(t01.last_upd, t02.last_upd, t03.last_upd) AS maxdate
FROM s_org_ext t01
LEFT OUTER JOIN s_org_ext_x t02 ON t01.row_id = t02.par_row_i
LEFT OUTER JOIN s_addr_org t03 ON t01.pr_addr_id = t03.row_id
WHERE t01.int_org_flg = 'n';