iseries ejemplo current sql db2

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.