CASE WHEN 컬럼1 = 'Y'
AND 컬럼2 = 'N'
AND 컬럼3 = 'N' THEN '1'
WHEN 컬럼1 = 'N'
AND 컬럼2 = 'Y'
AND 컬럼3 = 'N' THEN '2'
WHEN 컬럼1 = 'Y'
AND 컬럼3 = 'N' THEN '1,2'
.
이런식으로 선언된 케이스 문이 있을때 해당 쿼리를 좀더
간결하게 표현할 수 있는 쿼리문 이 있을까요?
답변 부탁 드립니다.
여러 컬럼이면 decode로 아래처럼 하는 방법도 있는 것 같습니다.
decode(컬럼1||컬럼2||컬럼3,'YNN','1','NYN','2','YYN','1,2')
WITH t AS ( SELECT 'N' c1, 'N' c2, 'N' c3 FROM dual UNION ALL SELECT 'N', 'N', 'Y' FROM dual UNION ALL SELECT 'N', 'Y', 'N' FROM dual UNION ALL SELECT 'Y', 'N', 'N' FROM dual UNION ALL SELECT 'N', 'Y', 'Y' FROM dual UNION ALL SELECT 'Y', 'N', 'Y' FROM dual UNION ALL SELECT 'Y', 'Y', 'N' FROM dual UNION ALL SELECT 'Y', 'Y', 'Y' FROM dual ) SELECT c1, c2, c3 , DECODE(c1||c2||c3, 'YNN', '1' , 'NYN', '2' , 'NNY', '3' , 'YYN', '1,2' , 'YNY', '1,3' , 'NYY', '2,3' , 'YYY', '1, 2, 3' ) x1 , SUBSTR(DECODE(c1, 'Y', ',1') || DECODE(c2, 'Y', ',2') || DECODE(c3, 'Y', ',3') , 2) x2 FROM t ;