我需要根据某些条件从表中获取数据。
第1栏 | 第2栏 |
---|---|
ABC|DEF|GHI|JKL|XYZ | Y|Y|N|N|Y |
ABC|JKL|XYZ | Y|Y|N |
GHI|XYZ | Y|Y |
GHI|JKL | N|Y |
如果一条记录在第 1 列中具有 ABC 或 DEF 或 JKL 或 XYZ,并且在第 2 列中对应的值为 Y 然后必须选择记录
与
REGEXP_SUBSTR
和 CONNECT BY
。
SELECT DISTINCT t.Column1, t.Column2
FROM test_table t
JOIN (
SELECT
t.ID,
REGEXP_SUBSTR(t.Column1, '[^|]+', 1, LEVEL) AS col1,
REGEXP_SUBSTR(t.Column2, '[^|]+', 1, LEVEL) AS col2
FROM test_table t
CONNECT BY LEVEL <= REGEXP_COUNT(t.Column1, '\|') + 1
AND PRIOR t.ID = t.ID
AND PRIOR SYS_GUID() IS NOT NULL
) s ON t.ID = s.ID
WHERE s.col1 IN ('ABC', 'DEF', 'JKL', 'XYZ') AND s.col2 = 'Y';
输出:
第1栏 | 第2栏 |
---|---|
ABC|DEF|GHI|JKL|XYZ | Y|Y|N|N|Y |
ABC|JKL|XYZ | Y|Y|N |
GHI|XYZ | Y|Y |
GHI|JKL | N|Y |