Sql 在db2中查找两列之间的最大可空日期

Sql 在db2中查找两列之间的最大可空日期,sql,db2,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-1

我在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
a | b | date1 | date2
---------------------------------------------
1 abc 2014-09-02
2 aax 2015-12-30 2016-09-02
2 bax 2015-10-20
2 ayx 2014-12-10 2016-02-12
从上面的值可以看出,
date1
date2
也可以有
null

如何同时获得
date1
date2
的最大值

i、 e.查询输出应为2016-09-02,因为这是
date1
date2
中所有日期的最大日期

我正在使用Db2-9


谢谢你的阅读

使用
联合查询如何:

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

使用
联合
查询如何:

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
MAX()
是一只有趣的野兽

它可以作为标量函数和聚合函数使用

所以你真正需要的是

select max(max(coalesce(date1,'0001-01-01')
              ,coalesce(date2,'0001-01-01') 
              )
          )
from mytable
外部
MAX()
是聚合版本,内部是标量版本。

MAX()
是一个有趣的野兽

它可以作为标量函数和聚合函数使用

所以你真正需要的是

select max(max(coalesce(date1,'0001-01-01')
              ,coalesce(date2,'0001-01-01') 
              )
          )
from mytable

外部的
MAX()
是聚合版本,内部是标量版本。

LOL…今天早上我被Gordon Linoff彻底震撼了,但当时我正在打手机:-)ANSI SQL将
date
作为保留字。db2呢?(是的,Gordon出类拔萃……)哈哈……今天早上我被Gordon Linoff彻底震撼了,但当时我正在打手机:-)ANSI SQL将日期作为保留字。db2呢?(是的,戈登出类拔萃……)