WITH TAB1 AS ( SELECT '01' AS COL_A FROM DUAL UNION ALL SELECT '02' FROM DUAL UNION ALL SELECT '03' FROM DUAL UNION ALL SELECT '05' FROM DUAL ) SELECT COL_A FROM TAB1 WHERE 1 = 1 AND COL_A IN ( SELECT COL_S1 FROM ( SELECT '01' AS DIV, '01' AS COL_S1 FROM DUAL UNION ALL SELECT '02', '02' FROM DUAL UNION ALL SELECT '03', '03' FROM DUAL UNION ALL SELECT '04', '01' FROM DUAL UNION ALL SELECT '04', '03' FROM DUAL UNION ALL SELECT '05', '05' FROM DUAL ) TMP WHERE 1 = 1 AND DIV = '04' )
상기 SQL 처럼 특정 한가지 케이스만 두가지 값을 가져야하는 경우가 있는데...
요런 경우 위처럼 복잡하게 하지 않아도 적용될수 있는 SQL 이 있을까요?
위의 케이스는 4번 구분의 경우 '01'과 '03'을 가져옵니다.
자료가 많은 테이블이라 조회 대상 컬럼값을 치환하고 조인하면 안될거 같습니다.
SELECT col_a FROM tab1 WHERE 1 = 1 AND col_a IN ( DECODE(:v, '04', '01', :v) , DECODE(:v, '04', '03') ) ;
그냥 두쌍으로해서 하나를 안주면 되는군요.
마농님 답변 감사합니다.