스칼라 서브쿼리 CASE문 질문입니다.[오라클] 0 2 1,355

by 밥하는남자 [SQL Query] [2018.04.27 14:16:50]


select (case a.code when '1' then b.name_1
                   when '2' then b.name_2
                   when '3' then b.name_3
                   when '4' then b.name_4
                   when '5' then b.name_5
        end) res
  from ( with codeTab as (
            select '1' as code from dual union all
            select '2' as code from dual union all
            select '3' as code from dual union all
            select '4' as code from dual union all
            select '5' as code from dual
                )
         select * from codeTab
       ) A,
       (
       with deptTab as (
           select '1' code, 'AA_1' as name_1 from dual union all
            select '2' code, 'AA_2' as name_2 from dual union all
            select '3' code, 'AA_3' as name_3 from dual union all
            select '4' code, 'AA_4' as name_4 from dual union all
            select '5' code, 'AA_5' as name_5 from dual
            )
            select * from deptTab
       ) B
       where a.code = b.code

질문 준비를 제대로 하지않고 글올려서 죄송합니다. -0-

위 쿼리는 code값에 따라 deptTab테이블의 name_? 컬럼을 가져오게 되는 경우입니다.

실제로 해당 case문의 code 값이 50건 정도되어서요 case문이 최소 50라인이 넘어가게 되네요~

쿼리가 너무 길어져서 뭔가 좋은 방법이 혹시 있을까해서 질문드려봅니다.

by 마농 [2018.04.27 14:40:08]

스칼라서브쿼리에 from 절이 없는 거 맞나요?
1. from 절이 없는 게 맞다면?
  - 오라클은 아닌 듯 하고
  - 스칼라서브쿼리도 불필요해 보이네요.
  - case 사용을 대체할만한 간단한 표현은 없어 보이네요.
2. from 절이 없는 게 아니라 질문하면서 누락된 거라면?
  - 좀 더 명확하게 질문해 주세요.
  - 예시자료를 가지고 질문해 주세요.


by 마농 [2018.04.30 07:25:24]

제시하신 deptTab 형태가 맞나요?
여러개의 컬럼으로 되어 있는 것처럼 설명하고서는
여러행으로 되어 있는 예를 올려 주셨네요?
뭐가 맞는 건지 의문인데요?
위에 제시된 형태 대로라면? Case 문이 필요 없습니다.
단순 조인 문제입니다.

SELECT a.code
     , b.name
  FROM codeTab a
     , deptTab b
 WHERE a.code = b.code
;

 

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