CASE WHEN 조건문 THEN 컬럼명 질문! 0 4 5,321

by kyn [PL/SQL] CASE MISSING KEYWORD [2011.01.28 09:52:03]


SELECT 컬럼1, 컬럼2, 컬럼3,
CASE WHEN 조건문 THEN 컬럼4, 컬럼5, 컬럼6
ELSE
컬럼4, 컬럼5, 컬럼6, 컬럼7, 컬럼8, 컬럼9
END
FROM 테이블1, 테이블2
WHERE 테이블1.A = 테이블2.B;

가능한가요?
자꾸 THEN절에서 MISSING KEYWORD 에러가 나서요.

조건이 참일 때는 컬럼1~6이,
거짓일 때는 컬럼 1~9가 출력돼야 하는 쿼리인데...
그리고 WHERE절은 공통으로 만족해야 하고요.
제가 잘 몰라서...도와주세요!
by camela [2011.01.28 10:02:20]
조건에 따라서 컬럼 갯수가 가변적으로 나올 수는 없습니다.
그리고 하나의 컬럼값이 올 자리에 조건문을 주신 것이므로 하나의 값만 나오게 하셔야 됩니다.

by camela [2011.01.28 10:44:23]
최대 컬럼이 9개니까 9개로 나오게 쿼리를 짜셔야 할 것 같습니다.
조건이 참이면 7~9 컬럼은 null 로 채워지게 되겠죠.

SELECT 컬럼1
, 컬럼2
, 컬럼3
, regexp_substr(col,'[^\|]+',1,1) as col1
, regexp_substr(col,'[^\|]+',1,2) as col2
, regexp_substr(col,'[^\|]+',1,3) as col3
, regexp_substr(col,'[^\|]+',1,4) as col4
, regexp_substr(col,'[^\|]+',1,5) as col5
, regexp_substr(col,'[^\|]+',1,6) as col6
from (
SELECT 컬럼1, 컬럼2, 컬럼3,
CASE WHEN 조건문 THEN 컬럼4, 컬럼5, 컬럼6
ELSE
컬럼4, 컬럼5, 컬럼6, 컬럼7, 컬럼8, 컬럼9
END as col
FROM 테이블1, 테이블2
WHERE 테이블1.A = 테이블2.B)

by 마농 [2011.01.28 12:03:26]
SELECT 컬럼1, 컬럼2, 컬럼3
, 컬럼4, 컬럼5, 컬럼6
, CASE WHEN 반대조건문 THEN 컬럼7 END 컬럼7
, CASE WHEN 반대조건문 THEN 컬럼8 END 컬럼8
, CASE WHEN 반대조건문 THEN 컬럼9 END 컬럼9
FROM 테이블1, 테이블2
WHERE 테이블1.A = 테이블2.B
;

1. 이와 같이 컬럼은 9개로 하되 조건에 따라 값이 나오고 안나오고 차이를 두거나
2. 쿼리 단계가 아닌 응용프로그램 단계에서 두가지 쿼리로 분기하시거나.(동적쿼리)

by camela [2011.01.28 12:28:41]
구분자를 빼먹었었네요.

CASE WHEN 조건문 THEN 컬럼4 || '|' || 컬럼5 || '|' || 컬럼6
ELSE
컬럼4 || '|' || 컬럼5 || '|' || 컬럼6 || '|' || 컬럼7 || '|' || 컬럼8 || '|' || 컬럼9
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입