30 일경우 P1, P2가 되어야 되고
31일경우 P3
32일경우 P4
이렇다고 한다면
select
*
from POWER
where factory IN (case when x = 30 then 'P1,P2'
when x = 31 then 'P3'
when x = 32 then 'P4' END)
저 case 부분을 어떻게 해야 되는지 모르겠습니다.
IN (CONCAT(CONCAT('''P5''', CHR(44)), '''P6''')) 도 해보고 ||로 합쳐도 봤는데
이래저래 찾아도 보고 쿼리도 실행해보고 했는데 어떻게 해야 되는지 찾다가 몰라서요 ㅠㅠ
SELECT * FROM power WHERE factory IN ( DECODE(:x, 30, 'P1') , DECODE(:x, 30, 'P2', 31, 'P3', 32, 'P4') ) ; SELECT * FROM power WHERE ( ( :x = 30 AND factory IN ('P1','P2') ) OR ( :x = 31 AND factory = 'P3' ) OR ( :x = 32 AND factory = 'P4' ) ) ; SELECT * FROM power WHERE CASE WHEN :x = 30 AND factory IN ('P1','P2') THEN 1 WHEN :x = 31 AND factory = 'P3' THEN 1 WHEN :x = 32 AND factory = 'P4' THEN 1 ELSE 0 END = 1 ; SELECT * FROM power WHERE factory IN (SELECT f FROM (SELECT 30 gb, 'P1' f FROM dual UNION ALL SELECT 30, 'P2' FROM dual UNION ALL SELECT 31, 'P3' FROM dual UNION ALL SELECT 32, 'P4' FROM dual ) WHERE gb = :x ) ; SELECT * FROM power WHERE (:x, factory) IN ( (30, 'P1') , (30, 'P2') , (31, 'P3') , (32, 'P4') ) ;