sql >> Base de Datos >  >> RDS >> Oracle

Escribir una vista de base de datos de Oracle basada en una diferencia de marca de tiempo de columna diferente

Si quieres la diferencia con el created_time que no tiene componente de tiempo, entonces quieres una lógica como esta:

select msg_guid,
       (max(case when payload_type = 1 then created_time end) -
        (case when max(case when payload_type = 2 then created_time end) <>
                   trunc(max(case when payload_type = 2 then created_time end))
              then max(case when payload_type = 2 then created_time end) 
              when max(case when payload_type = 3 then created_time end) <>
                   trunc(max(case when payload_type = 3 then created_time end))
              then max(case when payload_type = 3 then created_time end) 
        end)
        ) as diff              
from table t
group by msg_guid;

Esto devuelve el resultado en fracciones de un día.