Sql 在db2中查找两列之间的最大可空日期
我在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
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呢?(是的,戈登出类拔萃……)