[답변]도와주세요... 0 2 2,577

by 성시현 [2007.07.23 14:59:51]


불필요하게 1번씩 더 access되어 있는 형태군요...;

아래 참고하여 정리하시길...;

 

SELECT
      a.staf  -- 담당자
    , SUM(a.tot_amnt), -- 6월성과금 합계
      CASE  WHEN a.team<>'2050'
            THEN
                CASE WHEN SUM(a.tot_amnt) < 5000000 THEN FLOOR(SUM(a.tot_amnt)*0.06)
                     WHEN SUM(a.tot_amnt) BETWEEN 5000000 AND 9999999 THEN FLOOR(SUM(a.tot_amnt)*0.08)
                     WHEN SUM(a.tot_amnt) BETWEEN 10000000 AND 12999999 THEN FLOOR(SUM(a.tot_amnt)*0.1)
                     WHEN SUM(a.tot_amnt) BETWEEN 13000000 AND 15999999 THEN FLOOR(SUM(a.tot_amnt)*0.11)
                     WHEN SUM(a.tot_amnt) BETWEEN 16000000 AND 17999999 THEN FLOOR(SUM(a.tot_amnt)*0.12)
                     WHEN SUM(a.tot_amnt) BETWEEN 18000000 AND 19999999 THEN FLOOR(SUM(a.tot_amnt)*0.13)
                     WHEN SUM(a.recv_tot_amnt) BETWEEN 20000000 AND 21999999 THEN FLOOR(SUM(a.recv_tot_amnt)*0.14)
                     ELSE SUM(FLOOR(SUM(a.recv_tot_amnt)*0.15))
                END
            WHEN a.team='2050' THEN FLOOR(SUM(a.tot_amnt * DECODE(b.mbs_ysno, 'Y', 0.1, 0.13)))
            ELSE FLOOR(SUM(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, a.team

 

건승하시길...수고하세요~~

 

by 김해정 [2007.07.23 00:00:00]
감사합니다....^^

근데 a.staf를 group by에 정의 했는데..
이런 오류가 뜨네요....
단일행이라도 group by에 정의하면 된다고..
알고 있는데... 왜 이런걸까요??
ORA-00937: 단일 그룹의 그룹 함수가 아닙니다

by finecomp [2007.07.23 00:00:00]
GROUP BY에 a.team추가하셨나요?
이 컬럼이 절대로 GROUP BY에 들어가면 안되는 데이터구조라면 b.mbs_ysno처럼 SUM안으로 기어들어가야 오류가 안납니다...^^;

GROUP BY에 쓰인 항목들이외의 다른 컬럼들은 SELECT List에서 집계함수안으로 들어가던지 상수던지 해야만 오류가 안납니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입