case 구문 질문좀 드릴게요 1 6 1,695

by 일자코딩 [2014.01.02 10:35:01]


SELECT a.1, a.2
CASE WHEN a.3 = b.3 THEN
CASE WHEN a.4 = b.4 THEN
CASE WHEN a.5 = b.5 THEN
CASE WHEN a.6 = b.6 THEN
CASE WHEN a.7 = b.7 THEN 'Y' ELSE 'N' END END END END END AS match_yn FROM ....
                  
이런식으로 쓰고 있는데 같은경우 'Y'는 나오는데 다른값일경우 'N'는 아나오고 null로 나오던데 ....잘못쓴부분을 모르겠네요..ㅜ
by 임상준 [2014.01.02 11:04:43]
CASE
   WHEN a.3 = b.3 THEN
   CASE
WHEN a.4 = b.4 THEN
CASE
   WHEN a.5 = b.5 THEN
   CASE
  WHEN a.6 = b.6 THEN
  CASE
    WHEN a.7 = b.7 THEN 'Y'
    ELSE 'N'
  END
    END
END
   END
END
AS match_yn

작성자분이 쓰신 케이스는 이거입니다..
상위 4개 케이스 조건을 만족하지 않으면 널이 나오겠고요
상위 4개를 만족하고 맨 마지막 a.7=b.7 을 만족하지 않을때만 'N' 이 나오겠죠 

by 용근님 [2014.01.02 11:06:22]
case when a3 = b3 and a4 =b4 .................then
'Y'
else
'N'
end

by 마농 [2014.01.02 11:21:03]
-- 작성하신 그대로만 고친다면. 각 END 마다 ELSE 'N' 을 넣어주셔야 하는데...
-- 이렇게 CASE를 중첩으로 사용하시면 복잡하기만 하죠.
CASE WHEN a.3 = b.3
      AND a.4 = b.4
      AND a.5 = b.5
      AND a.6 = b.6
      AND a.7 = b.7
 THEN 'Y'
 ELSE 'N'
  END AS match_yn

by 아발란체 [2014.01.02 11:25:29]
IF(조건식) {
    ...
} ELSE IF(조건식) {
    ...
} ELSE IF(조건식) {
    ...
}
과 같이
1번째 조건이 아니면 2번째 조건으로 판변하는 것을 원하셨다면
다음과 같은 방법으로 기술되어야 합니다.
CASE
    WHEN(a = 1) THEN 'A'
    WHEN(a = 2) THEN 'B'
    WHEN(a = 3) THEN 'C'
    ELSE 'Zero'
END 


기술 하신 방법은 용근님이 올려주신 것처럼
a = 1 AND b = 1 AND c = 1 AND d = 1
모든 것이 만족해야 값이 나옵니다.

by 일자코딩 [2014.01.02 13:15:40]
아..잘못이해하고있었네요..모두 감사합니다..

by Oracler [2014.01.02 18:31:28]
들여쓰기를 잘해서 가독성을 높이는 것도 중요합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입