add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE table_name (csf, id, seqNum, data, rs_id) AS
SELECT 1, 1, 1, 'ABC', '01' FROM DUAL UNION ALL
SELECT 1, 2, 2, 'DEF', '02' FROM DUAL UNION ALL
SELECT 1, 3, 3, 'GHI', '03' FROM DUAL UNION ALL
SELECT 1, 4, 4, 'JKL', '04' FROM DUAL UNION ALL
SELECT 0, 5, 5, 'MNO', '05' FROM DUAL UNION ALL
SELECT 0, 5, 1, 'ABC', '06' FROM DUAL UNION ALL
SELECT 1, 6, 1, 'ABC', '07' FROM DUAL UNION ALL
SELECT 1, 7, 2, 'DEF', '08' FROM DUAL UNION ALL
SELECT 1, 8, 3, 'GHI', '09' FROM DUAL UNION ALL
SELECT 1, 8, 4, 'JKL', '10' FROM DUAL UNION ALL
SELECT 0, 9, 5, 'MNO', '11' FROM DUAL;
11 rows affected
SELECT MIN(last_csf) AS csf,
MIN(first_id) AS id,
MIN(last_seqnum) AS seqnum,
LISTAGG(data) WITHIN GROUP (ORDER BY seqnum) AS data,
MIN(last_rs_id) AS rs_id
FROM table_name
MATCH_RECOGNIZE(
ORDER BY id, seqnum
MEASURES
LAST(csf) AS last_csf,
FIRST(id) AS first_id,
LAST(seqNum) AS last_seqnum,
LAST(rs_id) AS last_rs_id,
MATCH_NUMBER() AS mno
ALL ROWS PER MATCH
PATTERN (one_csf* zero_csf)
DEFINE
one_csf AS csf = 1,
zero_csf AS csf = 0
)
GROUP BY mno
CSF ID SEQNUM DATA RS_ID
0 1 1 ABCABCDEFGHIJKL 01
0 5 5 MNO 05
0 6 1 ABCDEFGHIJKLMNO 07