쿼리문 질문입니다. ^^ 0 4 971

by 정대림 [2007.08.30 13:54:38]


테이블에서 cms_state 값으로 구분을 해서 합계를 내려고 합니다.

 

제가 원하는 것은

 

53의 합계, 71,72,73의 공통합계, 74의 합계. 이렇게 3가지의 합계를 알고 싶습니다.

 

근데 아래와 같이 하니까. 각각의 합계가 나오네요 ^^ ;;

 

쿼리)

select cms_state, case when cms_state = 53 then sum(pay_amount)
                      when cms_state in (71,72,73) then sum(pay_amount)
                      when cms_state = 74 then sum(pay_amount) end as "금액"
from kname
where cms_state in (53,71,72,73,74)
group by cms_state;

쿼리결과)

cms_state     금액

53                251923260
71                10776450
72                108000
73                46500
74                34244620

 

원하는 답

cms_state     금액

53                251923260
71,72,73        10930950

74                34244620

 

 

cms_state은 출력 필요 없습니다.

by 현 [2007.08.30 00:00:00]
sum(decode(cms_state,53,pay_amount)),
sum(decode(cms_state,71,pay_amount,72,pay_amount,73,pay_amount)),
sum(decode(cms_state,74,pay_amount))
이렇게 하시면 되고요,
case로 하시려면 in으로 하지 말고 이걸로 해보면 어떨까요?

by 정대림 [2007.08.30 00:00:00]
흠. 출력할것은 5개 값이지만 10개 남짓 다른 값이 있어서.. 그건 좀. ;;
감사합니다 ^^

by 마농 [2007.08.30 00:00:00]
GROUP BY 항목에 CASE를 쓰세요.

by 현 [2007.08.30 00:00:00]
오호..역시 마농님....
볼때 마다 느끼는 거지만,
실력과 잔머리가 대단하다는걸 많이 느낍니다..
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입