case문 사용시...?? 0 4 2,235

by 송미진 [2007.08.21 14:01:11]


안녕하세요?

 

입추가 지났는데 날씨가 너무 더워요.^^~

 

아래와 같은 쿼리

 

Select A,B,C, CASE WHEN (A-B-C) < 0 THEN '-'
                                ELSE (A-B-C)
                       END as D

From T

 

를 토드에서 실행시키면 밑줄친 -C에 블럭지정이 되면서 ORA-00932:inconsistent datatypes: expected CHAR got NUMER라는 메세지가 떠요...

 

앞에 TO_NUMBER도 해봤는데 안되네요.

 

무엇을 바꿔야하죠?

 

DECODE로 바꿀수도 있나요?

 

Select A,B,C, DECODE((A-B-C), 여기에 어떻게 표현해야하나요? , '-',(A-B-C))

From T

 

갈쳐주세요~~~

 

 

by 마농 [2007.08.21 00:00:00]
THEN 절에는 문자가 오고 ELSE 절에는 숫자가 왔네요.
타입이 일치하지 않아서 발생하는 에러입니다.
'-'를 숫자로 바꿀 수 없으니 숫자(a-b-c)를 문자로 바꿔야 겠죠.

by 송미진 [2007.08.21 00:00:00]
감사합니당.
그런데 decode를 사용해서 표현할 수는 없나요?--;;
(모르는게 죄는 아니죠?ㅜㅜ)

by 마농 [2007.08.21 00:00:00]
decode()도 기본 문법만 알면 얼마든지 적용 가능합니다. case 와 비슷해요.
단, 위의 에러는 decode로 해결되진 않아요.
DECODE(SIGN(a-b-c),-1,'-',TO_CHAR(a-b-c))

by 송미진 [2007.08.21 00:00:00]
감사합니다. 위 문제는 해결했구요..전 그냥 decode로 할수 있나 궁금해서요...^^
답변 감사합니다! 많이 배워요~ㅎㅎ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입