도와주세요... 0 0 1,927

by 김해정 [2007.07.23 11:17:19]


이제 막 오라클을 시작한 직장인 입니다..
제가 너무 case문만 남발해서 그런지...
원하는 결과물이 잘 안 나옵니다...
그룹함수와 단일함수를 함께 써야 할때...
어떻게 정의 내려줘야 하는지....궁금합니다..
여러조건은 맞춰야 하고...
담당자별로 그룹을 쓰려니 계속 막힙니다....
도와주세요... 제가 지금 얻으려는 결과물은....
담당자별 6월분 각 건에 대한 성과금을 구해서 전체 담당자별 성과금합계를 구해야 합니다..


select a.staf,  -- 담당자
 sum(a.tot_amnt), -- 6월성과금 합계
 (case when a.team<>'2050' then (select case   when sum(a.tot_amnt)<5000000 then floor(a.tot_amnt*0.06)
            when sum(a.tot_amnt) between 5000000 and 9999999 then floor(a.tot_amnt*0.08)
            when sum(a.tot_amnt) between 10000000 and 12999999 then floor(a.tot_amnt*0.1)
            when sum(a.tot_amnt) between 13000000 and 15999999 then floor(a.tot_amnt*0.11)
            when sum(a.tot_amnt) between 16000000 and 17999999 then floor(a.tot_amnt*0.12)
            when sum(a.tot_amnt) between 18000000 and 19999999 then floor(a.tot_amnt*0.13)
            when sum(a.recv_tot_amnt) between 20000000 and 21999999 then floor(a.tot_amnt*0.14)
            else sum(floor(a.tot_amnt*0.15))
      end
         from a, b
         where a.id = b.id
         and a.numb = b.numb
         and a.seq = b.seq
         and to_char(date, 'YYYYMM') = '200706'
         and b.type = '2'
         and staf <> '103012'
         and b.use_ysno = ' ')

  when a.team='2050' and b.mbs_ysno<>'Y' then floor(a.tot_amnt*0.13)
  when a.team='2050' and b.mbs_ysno='Y' then floor(a.tot_amnt*0.1)
  else floor(a.tot_amnt*0.06)
 end ) BB
from a, b
where a.id = b.id
and a.numb = b.numb
and a.seq = b.seq
and to_char(date, 'YYYYMM') = '200706'
and b.type = '2'
and staf <> '103012'
and b.use_ysno = ' '
group by a.staf

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