오라클에서 case when 절 안에 select 쿼리를 사용할 수 있나요? 0 5 973

by 아침이네 [Oracle 기초] oralce [2021.11.05 11:42:36]


select 쿼리 중간에 case when 사용해서 다시 또 그 안에 select 쿼리를 쓸 수 있을까요?

by 모래가흙흙 [2021.11.05 11:54:04]

네 가능합니다


by 아침이네 [2021.11.05 12:37:22]

혹시 예시같은 걸 볼 수 있을까요?


by 아침이네 [2021.11.05 12:57:07]
select A.STIE_NO , A.SITE_NM,

CASE WHEN (SELECT B.NM 
                                     FROM TABLE B, TABLE C
                                     WHERE A.SOTE_NO=C.NO AND  B.CODE=C.SUBCODE
                                       AND B.CODE='415000') THEN '1'
                 WHEN (SELECT B.NM 
                                     FROM TABLE B, TABLE C
                                     WHERE A.SOTE_NO=C.NO AND  B.CODE=C.SUBCODE
                                       AND B.CODE='416000')  THEN '2'
                         ELSE '3'  
                 END AS TEST 
FROM TABLE A

위에 처럼 했는데 계속 MISSING EXPRESSION 이라고 뜨는데 어떻게 고쳐야할까요?


by 모래가흙흙 [2021.11.05 13:18:56]

첫번째에,  (SELECT B.NM FROM TABLE B, TABLE C WHERE A.SOTE_NO=C.NO AND  B.CODE=C.SUBCODE AND B.CODE='415000')    이부분하고  비교하는 부분이 없어요. 

결국 B.NM하고 무언가 비교해서 맞아야  THEN '1' 이 됩니다

 

EX)

 CASE WHEN A.NM = (SELECT B.NM FROM TABLE B, TABLE C WHERE A.SOTE_NO=C.NO AND B.CODE=C.SUBCODE AND B.CODE='415000') THEN '1' ...


by isNull [2021.11.05 13:27:11]

일단 테이블 구조를 몰라서 여러건 나올소지가 있으면 추가적으로 더 수정해야 됩니다.

대충... 

---
 

SELECT A.STIE_NO
     , A.SITE_NM
     , CASE ( SELECT B.CODE
                FROM TABLE B
                   , TABLE C
               WHERE 1 = 1
                 AND C.NO      = A.SOTE_NO
                 AND C.SUBCODE = B.CODE ) WHEN '415000' THEN '1'
                                          WHEN '416000' THEN '2'
                                          ELSE '3'
       END AS TEST 
  FROM TABLE A
 WHERE 1 = 1

 

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