我在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。
感谢阅读!
答案 0 :(得分:1)
如何使用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
答案 1 :(得分:0)
MAX()
是一个有趣的野兽...
它既可以作为标量函数,也可以作为聚合函数。
所以你真正需要的是
select max(max(coalesce(date1,'0001-01-01')
,coalesce(date2,'0001-01-01')
)
)
from mytable
外部MAX()
是聚合版本,内部是标量版本。