您可以先使用LISTAGG,然后再使用REGEXP_SUBSTR。
SELECT CODE,
ACCT,
REGEXP_SUBSTR (CONCT,
'[^,]+',
1,
1)
ID1,
REGEXP_SUBSTR (CONCT,
'[^,]+',
1,
2)
AS ID2
FROM (WITH MAIN
AS (SELECT 1 AS ID, '002' AS CODE, '123456' AS ACCT FROM DUAL
UNION ALL
SELECT 1 AS ID, '004' AS CODE, '123456' AS ACCT FROM DUAL
UNION ALL
SELECT 2 AS ID, '004' AS CODE, '456789' AS ACCT FROM DUAL
UNION ALL
SELECT 2 AS ID, '004' AS CODE, '123456' AS ACCT FROM DUAL
UNION ALL
SELECT 3 AS ID, '001' AS CODE, '3456456' AS ACCT FROM DUAL
UNION ALL
SELECT 4 AS ID, '005' AS CODE, '975236' AS ACCT FROM DUAL
UNION ALL
SELECT 5 AS ID, '006' AS CODE, '146387' AS ACCT FROM DUAL
UNION ALL
SELECT 6 AS ID, '004' AS CODE, '0054321' AS ACCT FROM DUAL
UNION ALL
SELECT 6 AS ID, '010' AS CODE, '123456' AS ACCT FROM DUAL
UNION ALL
SELECT 7 AS ID, '008' AS CODE, '165432' AS ACCT FROM DUAL
UNION ALL
SELECT 7 AS ID, '007' AS CODE, '987654' AS ACCT FROM DUAL
UNION ALL
SELECT 7 AS ID, '002' AS CODE, '123456' AS ACCT FROM DUAL)
SELECT A.CODE,
A.ACCT,
LISTAGG (A.ID, ',') WITHIN GROUP (ORDER BY A.ID) AS CONCT
FROM MAIN A
GROUP BY A.CODE, A.ACCT)