여러개 case문 질문드립니다. 0 3 346

by 퇴근하고싶다 [Oracle 기초] [2019.04.04 17:14:25]


case문 여러개를 쓰고싶은데 맨위에 조건이 만족되면 밑에 조건문은 성립이 안되네요 ㅠㅠ

table : staff

이름 성별 코드
홍길동 A
김유신 D
유관순 B
이순신 C

select 이름,성별,코드,

case when 성별='남' then 1

when 성별 ='남' and 코드='A'  then 2

when 성별 ='남' and 코드='C'  then 3

when 성별='남' and 코드='D' then 4

else 0 end 출력

from staff

이름 성별 코드 출력
홍길동 A 1
김유신 D 1
이순신 C 1

이렇게 출력됩니다 .

위에 조건문만 성립이 되는거같습니다 ㅠ

이름 성별 코드 출력
홍길동 A 2
김유신 D 4
이순신 C 3

각각 조건에 맞게 출력하고 싶습니다.

 

감사합니다.

 

 

by 마농 [2019.04.04 17:27:51]

1 이나 0 도 포함된 원본 대비 결과 예를 들어 주세요.
위 예시 자료로는 첫번째 when 절과 마지막 else 절이 필요한 건지 모르겠네요.
조건 3개만 주면 되는 것 아닌지?


by 마농 [2019.04.04 17:36:21]
WITH staff AS
(
SELECT '홍길동' 이름, '남' 성별, 'A' 코드 FROM dual
UNION ALL SELECT '김유신', '남', 'D' FROM dual
UNION ALL SELECT '유관순', '여', 'B' FROM dual
UNION ALL SELECT '이순신', '남', 'C' FROM dual
UNION ALL SELECT '구루비', '남', 'B' FROM dual
)
SELECT 이름, 성별, 코드
     , CASE 성별 WHEN '남'
       THEN CASE 코드 WHEN 'A' THEN 2
                      WHEN 'C' THEN 3
                      WHEN 'D' THEN 4
            ELSE 1 END
       ELSE 0 END 출력
  FROM staff
;

 


by 퇴근하고싶다 [2019.04.14 14:33:07]

답변감사합니다..! 질문이 누락되어 다시 올리겠습니다 감사합니다 ㅎㅎ

 

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