SELECT * FROM (
with t1 as (
SELECT '002' as groupid, 'A.2018' as collection, 1 as sequence FROM DUAL UNION ALL
SELECT '002','A.2017',2 FROM DUAL UNION ALL
SELECT '003','P.2018',1 FROM DUAL UNION ALL
SELECT '003','L.2018',2 FROM DUAL UNION ALL
SELECT '003','R.2018',3 FROM DUAL UNION ALL
SELECT '003','M.2018',4 FROM DUAL
),
t2 as (
SELECT 'A.2018' as collection,'002' as segment ,'C001030' as customer,304.30 as sales FROM DUAL UNION ALL
SELECT 'A.2017','002','C001030',493.10 FROM DUAL UNION ALL
SELECT 'L.2018','002','C001030',232.33 FROM DUAL UNION ALL
SELECT 'L.2018','010','C001030',343.12 FROM DUAL UNION ALL
SELECT 'R.2018','002','C001030',434.23 FROM DUAL UNION ALL
SELECT 'M.2018','002','C001030',121.12 FROM DUAL
)
SELECT groupid,
t1.collection,
segment,
customer,
sales,
row_number() over (partition by groupid,segment,customer order by t1.collection ASC) rn
FROM t2,
t1
WHERE t1.collection = t2.collection
)
WHERE rn = 1
Выход:
GROUPID COLLECTION SEGMENT CUSTOMER SALES RN
002 A.2017 002 C001030 493.1 1
003 L.2018 002 C001030 232.33 1
003 L.2018 010 C001030 343.12 1
НО:
Ожидаемый результат для группы 002:
002 | A.2018 | 002 | C001030 | 304.30 |
а вы написали:
"первая коллекция (упорядоченная по последовательности коллекции)"
так что первая коллекция здесь A.2017
, я думаю.