ejemplo - time sql db2
Encontrar el máximo de fecha nullable entre dos columnas en db2 (2)
Tengo una tabla en Db2 llamada myTable
.
Tiene varias columnas:
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
Como se ve en los valores anteriores, date1
y date2
pueden tener valores null
.
¿Cómo puedo obtener el máximo de ambas date1
y date2
juntas?
es decir, el resultado de la consulta debe ser 2016-09-02, ya que es la fecha máxima de todas las fechas presentes en date1
y date2
.
Estoy usando Db2-9.
¡Gracias por leer!
¿Qué tal si usas una consulta UNION
?
SELECT MAX(t.newDate)
FROM
(
SELECT date1 AS newDate
FROM myTable
UNION
SELECT date2 AS newDate
FROM myTable
) t
Otra opción:
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()
es una bestia interesante ...
Está disponible tanto como función escalar como agregada.
Entonces todo lo que realmente necesitas es
select max(max(coalesce(date1,''0001-01-01'')
,coalesce(date2,''0001-01-01'')
)
)
from mytable
El MAX()
externo MAX()
es la versión agregada, el interno es el escalar.