DB 프로시저 관련 질문있습니다. 0 5 1,214

by 앙버터 [PL/SQL] 프로시저 프로시져 [2018.08.16 11:34:42]


예를 들어 어떤 화면의 콤보박스에서 값을 선택합니다. (A, B, C)

프로시저에서 받아 온 후,

이 가져온 값이 A 일때는 A = 'Y' 인 데이터,

B 일땐 B = 'Y' 인 데이터,

마찬가지로 C 일땐 C = 'Y' 인 데이터를 출력하고 싶은데요,

어떻게 구분해서 WHERE 절에 추가하면 될까요?

by chrome [2018.08.16 11:57:46]

CASE나 DECODE를 알아보세요. 

 


by 우리집아찌 [2018.08.16 12:00:34]
SELECT * FROM T 
 WHERE CASE WHEN 파라미터 = 'A' THEN A 
            WHEN 파라미터 = 'B' THEN B 
            WHEN 파라미터 = 'C' THEN C 
        END = 'Y'

 


by 앙버터 [2018.08.16 13:08:21]
SELECT *

  FROM T

 WHERE CASE WHEN 파라미터 = 'A' THEN 컬럼명 = 'Y'

            WHEN 파라미터 = 'B' THEN 컬럼명 = 'Y'

            WHEN 파라미터 = 'C' THEN 컬럼명 = 'Y'

알려주신 방법을 고민해보긴 했는데, THEN 이후의 컬럼명을 쓰는 부분이 문제가 있어서

어떻게 해야 할 지 모르겠습니다 ㅠㅠ


by 우리집아찌 [2018.08.16 13:22:13]

올려드린대로 해보세요. 

변형하지 마시구요.

-- 예제   '&VAL' => 변수

WITH T ( A , B , C  ) AS (
SELECT 'Y' , ''  , '' FROM DUAL UNION ALL
SELECT ''  , 'Y' , ''  FROM DUAL UNION ALL
SELECT ''  , ''  , 'Y' FROM DUAL 
)

SELECT * FROM T 
 WHERE CASE WHEN '&VAL' = 'A' THEN A 
            WHEN '&VAL' = 'B' THEN B 
            WHEN '&VAL' = 'C' THEN C 
        END = 'Y'

 


by 앙버터 [2018.08.16 13:30:34]

오 감사합니다, 이해했습니다. ㅠㅠㅠ 감사합니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입