Oracle
 sql >> Base de données >  >> RDS >> Oracle

Écrire la vue Oracle DB en fonction de la différence d'horodatage de colonne différente

Si vous voulez la différence avec le created_time qui n'a pas de composante temporelle, alors vous voulez une logique comme celle-ci :

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;

Cela renvoie le résultat sous forme de fractions de jour.