select 쿼리 중간에 case when 사용해서 다시 또 그 안에 select 쿼리를 쓸 수 있을까요?
네 가능합니다
혹시 예시같은 걸 볼 수 있을까요?
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 이라고 뜨는데 어떻게 고쳐야할까요?
첫번째에, (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' ...
일단 테이블 구조를 몰라서 여러건 나올소지가 있으면 추가적으로 더 수정해야 됩니다.
대충...
---
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