1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| WITH proj AS (SELECT 1 AS ID, 'un' AS short_name FROM dual
UNION ALL SELECT 2, 'deux' FROM DUAL
UNION ALL SELECT 3, 'trois' FROM DUAL),
pmb AS (SELECT 1 AS orig_proj_id, '01/01/2000' AS add_date, 'A' AS wbs_id FROM DUAL
UNION ALL SELECT 1, '01/01/2007', 'B' FROM dual
UNION ALL SELECT 2, '01/01/1970', 'C' FROM dual
UNION ALL SELECT 2, '01/01/2000', 'D' FROM dual),
cur AS (SELECT 1 AS orig_proj_id, '02/01/2000' AS add_date, 'E' AS wbs_id FROM DUAL
UNION ALL SELECT 1, '02/01/2007', 'F' FROM dual
UNION ALL SELECT 2, '02/01/1970', 'G' FROM dual
UNION ALL SELECT 2, '02/01/2000', 'H' FROM dual)
SELECT DISTINCT j.ID, j.short_name,
first_value(p.wbs_id) OVER (PARTITION BY p.orig_proj_id ORDER BY p.add_date DESC) PMB,
first_value(p.add_date) OVER (PARTITION BY p.orig_proj_id ORDER BY p.add_date DESC) datePMB,
first_value(c.wbs_id) OVER (PARTITION BY c.orig_proj_id ORDER BY c.add_date DESC) CUR,
first_value(c.add_date) OVER (PARTITION BY c.orig_proj_id ORDER BY c.add_date DESC) dateCUR
FROM proj j, pmb p, cur c
WHERE j.ID = p.orig_proj_id (+)
AND j.ID = c.orig_proj_id (+) |
Partager