1 2 3 4 5 6 7 8 9 10 11 12 13
| WITH T AS (SELECT 1 identifiant, TO_DATE('01/01/2015','DD/MM/RRRR') datdeb, TO_DATE('12/02/2016', 'DD/MM/RRRR') datfin FROM dual
UNION ALL SELECT 1, TO_DATE('13/02/2016','DD/MM/RRRR') datdeb, TO_DATE('18/11/2017', 'DD/MM/RRRR') datfin FROM dual
UNION ALL SELECT 1, TO_DATE('19/11/2017','DD/MM/RRRR') datdeb, TO_DATE('', 'DD/MM/RRRR') datfin FROM dual
UNION ALL SELECT 2, TO_DATE('01/02/2012','DD/MM/RRRR') datdeb, TO_DATE('18/11/2015', 'DD/MM/RRRR') datfin FROM dual
UNION ALL SELECT 2, TO_DATE('19/11/2015','DD/MM/RRRR') datdeb, TO_DATE('21/12/2016', 'DD/MM/RRRR') datfin FROM dual
UNION ALL SELECT 2, TO_DATE('22/12/2016','DD/MM/RRRR') datdeb, TO_DATE('31/12/2017', 'DD/MM/RRRR') datfin FROM dual)
SELECT identifiant, CASE WHEN MAX(NVL(datfin, TO_DATE('31.12.9999', 'DD.MM.RRRR'))) = TO_DATE('31.12.9999', 'DD.MM.RRRR') THEN NULL ELSE MAX(datfin) END datefin
FROM t
GROUP BY identifiant
IDENTIFIANT DATEFIN
1
2 31/12/2017 |
Partager