, , . , SUBSET.
WITH t(col0, col1, col2, col3, col4) AS (
SELECT 1, 'A', 0, 1, 5 FROM DUAL UNION ALL
SELECT 2, 'B', 0, 4, 0 FROM DUAL UNION ALL
SELECT 3, 'C', 2, 0, 0 FROM DUAL UNION ALL
SELECT 4, 'D', 0, 0, 0 FROM DUAL UNION ALL
SELECT 5, 'E', 3, 5, 0 FROM DUAL UNION ALL
SELECT 6, 'F', 0, 3, 0 FROM DUAL UNION ALL
SELECT 7, 'G', 0, 3, 1 FROM DUAL UNION ALL
SELECT 8, 'A', 0, 1, 5 FROM DUAL UNION ALL
SELECT 9, 'E', 3, 5, 0 FROM DUAL
)
SELECT col0, col1, C02, C03, C04
FROM t
match_recognize(
order by col0
measures nvl(C02.col2,0) C02,
nvl(C03.col3,0) C03,
nvl(C04.col4,0) C04
all rows per match
pattern ((C234|C23|C24|C34|C2|C3|C4|X)+)
subset C02 = (C234, C23, C24, C2),
C03 = (C234, C23, C34, C3),
C04 = (C234, C24, C34, C4)
define C234 as col2>0 and col3>0 and col4>0,
C23 as col2>0 and col3>0,
C24 as col2>0 and col4>0,
C34 as col3>0 and col4>0,
C2 as col2>0, C3 as col3>0, C4 as col4>0
);