1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| WITH t AS
( SELECT 1 tri, TO_DATE('01/05/2010', 'DD/MM/RRRR') d1, NULL d2 FROM dual
UNION ALL SELECT 1 tri, TO_DATE('01/04/2010', 'DD/MM/RRRR') d1, TO_DATE('01/01/2012', 'DD/MM/RRRR') d2 FROM dual
UNION ALL SELECT 1 tri, TO_DATE('01/01/2010', 'DD/MM/RRRR') d1, NULL d2 FROM dual
UNION ALL SELECT 2 tri, TO_DATE('01/01/2005', 'DD/MM/RRRR') d1, TO_DATE('31/12/2007', 'DD/MM/RRRR') d2 FROM dual
UNION ALL SELECT 2 tri, TO_DATE('01/01/2000', 'DD/MM/RRRR') d1, TO_DATE('31/12/2004', 'DD/MM/RRRR') d2 FROM dual
UNION ALL SELECT 2 tri, TO_DATE('01/01/1996', 'DD/MM/RRRR') d1, TO_DATE('31/12/2006', 'DD/MM/RRRR') d2 FROM dual
UNION ALL SELECT 2 tri, TO_DATE('08/09/1999', 'DD/MM/RRRR') d1, TO_DATE('31/12/2005', 'DD/MM/RRRR') d2 FROM dual
)
SELECT * FROM t
ORDER BY tri, DECODE(tri, 1, d1, 2,d2) desc
TRI D1 D2
1 01/05/2010
1 01/04/2010 01/01/2012
1 01/01/2010
2 01/01/2005 31/12/2007
2 01/01/1996 31/12/2006
2 08/09/1999 31/12/2005
2 01/01/2000 31/12/2004 |