查找db2中两列之间可以为空的最大日期

时间:2016-09-02 07:18:19

标签: sql db2

我在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

从上面的值可以看出,date1date2也可以有null个值。

如何同时获得date1date2的最大值?

即。查询的输出应为2016-09-02,因为这是date1date2中所有日期的最长日期。

我正在使用Db2-9。

感谢阅读!

2 个答案:

答案 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()是聚合版本,内部是标量版本。