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 nomenclature AS
(
SELECT 'A' c1, 10 tl, 'A1' c2, 2 qt FROM dual union ALL
SELECT 'A' , 20 , 'A1' , 4 FROM dual union ALL
SELECT 'A' , 10 , 'A2' , 10 FROM dual union ALL
SELECT 'A' , 10 , 'A3' , 5 FROM dual union ALL
SELECT 'A' , 20 , 'A2' , 20 FROM dual union ALL
SELECT 'A' , 20 , 'A3' , 10 FROM dual union ALL
SELECT 'A1' , 100 , 'A11' , 50 FROM dual union ALL
SELECT 'A1' , 200 , 'A12' , 100 FROM dual union ALL
SELECT 'A3' , 500 , 'A311' , 5 FROM dual union ALL
SELECT 'A3' , 500 , 'A312' , 10 FROM dual union ALL
SELECT 'A3' , 50 , 'A32' , 0.5 FROM dual union ALL
SELECT 'A3' , 100 , 'A33' , 1 FROM dual
)
, sr AS
(
SELECT c1, tl, c2, qt,
rank() over(PARTITION BY c1 ORDER BY tl DESC) AS rk
FROM nomenclature
)
SELECT c1, tl, c2, qt
FROM sr
WHERE rk = 1;
C1 TL C2 QT
A 20 A1 4
A 20 A2 20
A 20 A3 10
A1 200 A12 100
A3 500 A311 5
A3 500 A312 10 |
Partager