조인 DECODE문 변환하기 좀 알려주세요 0 2 1,352

by 하울카 [2014.02.13 10:26:52]



SELECT B.MSG_ID,
B.MSG,
 A.MSG_TYPE_CD,
A.PRMT_CD,
B.SYST
 FROM TEST_INFO A,
    MSG_TABL B
WHERE A.MSG_TYPE_CD = B.CHG_IND
    AND A.PRMT_CD = SUBSTR(B.SYST,4,6)
    AND A.EFCT_END_DT > SYSDATE
    AND A.PRDC_CD = 'AAA'
    AND A.UNTS_SVC_CD = 'ZZZ'
UNION ALL
SELECT B.MSG_ID,
B.MSG,
A.MSG_TYPE_CD,
     A.PRMT_CD,
     B.SYST
 FROM TEST_INFO A,
  MSG_TABL B
WHERE A.MSG_TYPE_CD = B.CHG_IND
    AND A.EFCT_END_DT > SYSDATE
    AND B.MSG_ID LIKE 'SU%'
    AND A.PRDC_CD = 'BBB'
    AND A.UNTS_SVC_CD = 'XXX';


   
--결과값   
ZZZ123   메시지1   D   SMS SUSMS
XXX456   메시지2   o    SU



UNION ALL 밑에 있는걸 빼고
위에 SELECT문으로만 DECODE 써서 하고싶은데요.

두번째 SELECT문 결과 값에서 A.PRMT_CD가 NULL값이어서
조건을 AND B.MSG_ID LIKE 'SU%' 이렇게 걸고 햇었거든요.

A.PRMT_CD가 NULL일때 AND B.MSG_ID LIKE 'SU%' 이걸로 검색하고
A.PRMT_CD가 값이 있을 땐 SUBSTR(B.SYST,4,6) 이걸로 검색하고

DECODE문좀 만들어주세요.
조건절에다가 해볼려하니 잘 안되네요..
by 아발란체 [2014.02.13 10:54:54]
조건절에서 

...
AND (
   (A.PRMT_CD IS NULL AND B.MSG_ID LIKE 'SU%')
   OR
   (A.PRMT_CD IS NOT NULL AND A.PRMT_CD = SUBSTR(B.SYST, 4, 6))
)

식으로 DECODE를 쓰지 않아도 됩니다 ~ :)

by 하울카 [2014.02.13 11:24:47]

감사합니다~^^

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