조회해야하는 컬럼 TEST에
A, B, C, D, E라는 코드값이 있습니다.
들어오는 파라미터값에 따라 출력되는 결과물이 달라집니다.
SELECT TEST FROM TABLE
WHERE TEST = NVL( ?, TEST)
A입력시 결과물에 A가 출력되게
B입력시 결과물에 A를 제외한 나머지를 출력되게
공백 입력시 해당 컬럼 값 전체 출력되게...
아무리 짱구를 굴려도 모르겠습니다... WHERE CASE문 폭풍검색했는데 답이 안 나오네요. 잘못 접근한 걸 가요?
WITH TABLE_1 AS ( SELECT 'A' AS TEST, 1 AS DATA UNION ALL SELECT 'B' AS TEST, 2 AS DATA UNION ALL SELECT 'C' AS TEST, 3 AS DATA UNION ALL SELECT 'D' AS TEST, 4 AS DATA UNION ALL SELECT 'E' AS TEST, 5 AS DATA ) , INPUT AS ( SELECT 'A' AS INPUT UNION ALL SELECT 'B' AS INPUT UNION ALL SELECT NULL AS INPUT ) SELECT T2.INPUT, T1.* FROM TABLE_1 T1, INPUT T2 WHERE (T2.INPUT = 'A' AND TEST = 'A' ) OR (T2.INPUT = 'B' AND TEST <> 'A' ) OR (T2.INPUT IS NULL) ORDER BY T2.INPUT, T1.TEST -- 정리 버전 SELECT * FROM TABLE_이름 WHERE (:변수 = 'A' AND TEST = 'A') -- 변수가 'A' 이고(일때) TEST = 'A' 인 데이터 OR (:변수 = 'B' AND TEST <> 'A' ) -- 변수가 'B' 이고(일때) TEST <> 'A' 인 데이터 OR (:변수 IS NULL) -- 변수가 NULL 일때 전체 데이터
WITH 문의 INPUT 테이블은 변수로 INPUT 넣는걸 구연한 것입니다.
아래 실 쿼리에서 T2 테이블(INPUT 테이블)을 제거하고 T2.INPUT 컬럼에 변수를 넣으면 동일하게 작동할듯 합니다.
OR 조건으로 각각 해당 조건값을 처리했습니다.
감사합니다! 회사 오자마자 확인했고 잘 작동됩니다. 감솨함다 횽님!! ㅠㅠ