我在Db2中有一个名为myTable的表。
它有几列:
a | b | date1 | date2
---------------------------------------------
1 abc <null> 2014-09-02
2 aax 2015-12-30 2016-09-02
2 bax 2015-10-20 <null>
2 ayx 2014-12-10 2016-02-12从上面的值可以看出,date1和date2也可以有null值。
如何同时获得date1和date2的最大值?
即,查询的输出应为2016-09-02,因为这是date1和date2中存在的所有日期的最大日期。
我使用的是Db2-9。
感谢您的阅读!
发布于 2016-09-02 15:20:00
使用UNION查询如何:
SELECT MAX(t.newDate)
FROM
(
SELECT date1 AS newDate
FROM myTable
UNION
SELECT date2 AS newDate
FROM myTable
) t另一种选择:
SELECT CASE WHEN t.date1 > t.date2 THEN t.date1 ELSE t.date2 END
FROM
(
SELECT (SELECT MAX(date1) FROM myTable) AS date1,
(SELECT MAX(date2) FROM myTable) AS date2
FROM SYSIBM.SYSDUMMY1
) t发布于 2016-09-02 20:39:21
MAX()是一个有趣的野兽..。
它既可以作为标量函数,也可以作为聚合函数。
所以你真正需要的就是
select max(max(coalesce(date1,'0001-01-01')
,coalesce(date2,'0001-01-01')
)
)
from mytable外部的MAX()是聚合版本,内部的是标量版本。
https://stackoverflow.com/questions/39286474
复制相似问题