WITH TEMP AS
(
SELECT 1 ID,'a' VAL,'m' BS FROM DUAL
UNION
SELECT 2 ID,'bc' VAL,'m' BS FROM DUAL
UNION
SELECT 2 ID,'cd' VAL,'n' BS FROM DUAL
UNION
SELECT 3 ID,'d' VAL,'n' BS FROM DUAL
)
SELECT REPLACE(WMSYS.WM_CONCAT(VAL1),',','') VAL,REPLACE(WMSYS.WM_CONCAT(BS),',','|') BS FROM
(
SELECT T.*,NVL(LTRIM(VAL,SUBSTR(REVERSE(LAG(VAL,1,NULL) OVER(PARTITION BY ID ORDER BY VAL)),1,1)),VAL) VAL1 FROM TEMP T
) GROUP BY ID
VAL
BS
a
m
bcd
m|n
d
n
|