следующее должно работать под Oracle, я надеюсь, это поможет вам понять:
WITH t AS
(SELECT 'J1' JOBNUMBER, 'A' SPLITVALUE FROM dual
UNION ALL
SELECT 'J1' JOBNUMBER, 'B' SPLITVALUE FROM dual
UNION ALL
SELECT 'J1' JOBNUMBER, 'C' SPLITVALUE FROM dual
UNION ALL
SELECT 'J2' JOBNUMBER, 'Z' SPLITVALUE FROM dual
UNION ALL
SELECT 'J2' JOBNUMBER, 'X' SPLITVALUE FROM dual
UNION ALL
SELECT 'J2' JOBNUMBER, 'Y' SPLITVALUE FROM dual)
----
select JOBNUMBER, max(SPLITVALUE1), max(SPLITVALUE2), max(SPLITVALUE3)
from (
select
JOBNUMBER,
case when row_number() over (partition by jobnumber order by SPLITVALUE) = 1 then SPLITVALUE else null end SPLITVALUE1,
case when row_number() over (partition by jobnumber order by SPLITVALUE) = 2 then SPLITVALUE else null end SPLITVALUE2,
case when row_number() over (partition by jobnumber order by SPLITVALUE) = 3 then SPLITVALUE else null end SPLITVALUE3
from t )
group by JOBNUMBER order by jobnumber
output:
JOBNUMBER SPLITVALUE1 SPLITVALUE2 SPLITVALUE3
--------- ---------------- ---------------- ----------------
J1 A B C
J2 X Y Z