case문 또는 decode문 문의 0 4 2,963

by Lonnie [SQL Query] case if decode [2016.06.27 14:22:22]


안녕하세요.

이곳에서 많은 도움을 받고 있어 항상 고맙습니다.

 

금번 쿼리 작성시 난관에 봉착되어 문의하고자 합니다.

 

오라클 내에서는 IF문을 사용할 수 없어서

case 문으로 대체하고자 하는데, 적용이 안되어서 문의합니다.

 

IF문 질의는 다음과 같습니다.

IF "ABC" <= 0 THEN 매워 = A ELSE 매워 = B

A = 손매워,

B = 손안매워 + 꿀떡 + 호떡 + 붕어빵 + 떡뽁이 + 오뎅

-> case문과 decode문으로 대체해서 사용하려면 어떻게 하면 좋을까요?

 

적용코드 부분은 아래와 같습니다.

select ...

<case문 또는 decode문 적용>

sum(nvl(123, 0) + nvl(456, 0) ... )

over(partitation by ABC) "추출"

from Table name

where baseyear = 2016;

by 마농 [2016.06.27 15:36:43]
SELECT CASE WHEN "ABC" <= 0
            THEN 손매워
            ELSE 손안매워 + 꿀떡 + 호떡 + 붕어빵 + 떡뽁이 + 오뎅
        END AS 매출

 


by Lonnie [2016.06.27 16:06:47]

고맙습니다. ^^

decode문은 적용하기가 적절하지 않네요.


by 마농 [2016.06.27 17:00:56]
DECODE(SIGN("ABC"), 1, 손안매워 + 꿀떡 + 호떡 + 붕어빵 + 떡뽁이 + 오뎅, 손매워) AS 매출

 


by Lonnie [2016.06.27 18:00:30]

ㅎㅎ~

Decode문을 이용하여 또 해결되었네요?

Query 전문가시네요~

 

Solution 1)

...

case

when (컬럼명1 <= 0 or 컬럼명1 is null)

then 손매워

else (nvl(손안매워, 0) + ... )

over (partitation by 컬럼명2) end "손매워손안매워 후이짜"

...

 

Solution 2)

...

sum(decode(sign(컬럼명1), 1,

      (nvl(손안매워, 0) + ... ), 손매워))

over (partitation by 컬럼명2) "손매워손안매워 후이짜"

...

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