1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| WITH myTable AS
(
SELECT to_date('2008-12-02 09:00:00','YYYY-MM-DD HH24:Mi:SS') AS heure, 'Pierre' AS nom, 'CUISINE' AS piece FROM dual
union ALL SELECT to_date('2008-12-02 09:23:00','YYYY-MM-DD HH24:Mi:SS') ,'Pierre', 'CUISINE' FROM dual
union ALL SELECT to_date('2008-12-02 10:32:00','YYYY-MM-DD HH24:Mi:SS') ,'Pierre', 'CUISINE' FROM dual
union ALL SELECT to_date('2008-12-02 10:50:00','YYYY-MM-DD HH24:Mi:SS') ,'Pierre', 'CHAMBRE' FROM dual
union ALL SELECT to_date('2008-12-02 11:32:00','YYYY-MM-DD HH24:Mi:SS') ,'Pierre', 'CHAMBRE' FROM dual
union ALL SELECT to_date('2008-12-02 14:00:00','YYYY-MM-DD HH24:Mi:SS') ,'Pierre', 'CUISINE' FROM dual
union ALL SELECT to_date('2008-12-02 15:23:00','YYYY-MM-DD HH24:Mi:SS') ,'Pierre', 'SALON' FROM dual
union ALL SELECT to_date('2008-12-02 16:32:00','YYYY-MM-DD HH24:Mi:SS') ,'Pierre', 'CUISINE' FROM dual
union ALL SELECT to_date('2008-12-02 17:50:00','YYYY-MM-DD HH24:Mi:SS') ,'Pierre', 'CHAMBRE' FROM dual
union ALL SELECT to_date('2008-12-02 18:32:00','YYYY-MM-DD HH24:Mi:SS') ,'Pierre', 'CHAMBRE' FROM dual
union ALL SELECT to_date('2008-12-02 19:00:00','YYYY-MM-DD HH24:Mi:SS') ,'Pierre', 'SDB' FROM dual
union ALL SELECT to_date('2008-12-02 09:23:00','YYYY-MM-DD HH24:Mi:SS') ,'Paul', 'CUISINE' FROM dual
union ALL SELECT to_date('2008-12-02 10:32:00','YYYY-MM-DD HH24:Mi:SS') ,'Paul', 'CUISINE' FROM dual
union ALL SELECT to_date('2008-12-02 10:50:00','YYYY-MM-DD HH24:Mi:SS') ,'Paul', 'CHAMBRE' FROM dual
union ALL SELECT to_date('2008-12-02 11:32:00','YYYY-MM-DD HH24:Mi:SS') ,'Paul', 'CHAMBRE' FROM dual
union ALL SELECT to_date('2008-12-02 14:00:00','YYYY-MM-DD HH24:Mi:SS') ,'Paul', 'CUISINE' FROM dual
union ALL SELECT to_date('2008-12-02 15:23:00','YYYY-MM-DD HH24:Mi:SS') ,'Paul', 'SALON' FROM dual
union ALL SELECT to_date('2008-12-02 16:32:00','YYYY-MM-DD HH24:Mi:SS') ,'Paul', 'CUISINE' FROM dual
union ALL SELECT to_date('2008-12-02 17:50:00','YYYY-MM-DD HH24:Mi:SS') ,'Jack', 'CHAMBRE' FROM dual
union ALL SELECT to_date('2008-12-02 18:32:00','YYYY-MM-DD HH24:Mi:SS') ,'Jack', 'CHAMBRE' FROM dual
union ALL SELECT to_date('2008-12-02 19:00:00','YYYY-MM-DD HH24:Mi:SS') ,'Jack', 'SDB' FROM dual
),
myTableRank AS
(SELECT rank() over(partition BY nom ORDER BY heure) AS rank, t.* FROM myTable t)
SELECT t2.heure, t2.nom, t2.piece
FROM myTableRank t1 RIGHT OUTER JOIN myTableRank t2
ON t1.rank + 1 = t2.rank
AND t1.nom = t2.nom
WHERE t1.piece != t2.piece OR t1.piece IS NULL
ORDER BY t2.nom, t2.heure |
Partager