GROUP BY 표현식이 아닙니다. 0 2 9,500

by 널쓰 [SQL Query] Group By 변수 [2014.01.06 20:37:58]


SELECT COMP_CODE  
   , GAAP_GUBN 
   , UNIT_CODE 
   , SAUP_CODE
   , CASE WHEN SUBSTR(GANJ_MONT,1,4) < SUBSTR(#SRCH_YEAR#,1,4) THEN '000000' ELSE GANJ_MONT 
END GANJ_MONT
   , GANJ_SEQN 
   , CNTM_NUMB
   , GANJ_GUBN
   , SUM(GANJ_MAMT) GANJ_MAMT   /* 월별 한줄*/
   FROM T_CO_GANJ  
WHERE COMP_CODE = 'FA'  
  AND GAAP_GUBN = #GAAP_GUBN#  
  AND UNIT_CODE = #UNIT_CODE#
  AND SAUP_CODE = DECODE(#SAUP_CODE#,'0010','*',#SAUP_CODE#)
  AND SUBSTR(GANJ_MONT,1,4) <= SUBSTR(#SRCH_YEAR#,1,4)
  AND GANJ_SEQN = 0
  AND CNTM_NUMB = '2012F0001'
  AND GANJ_GUBN != '*' -- 원가구분
 GROUP BY COMP_CODE  
, GAAP_GUBN 
, UNIT_CODE
 , SAUP_CODE
, CASE WHEN SUBSTR(GANJ_MONT,1,4) < SUBSTR(#SRCH_YEAR#,1,4) THEN '000000' ELSE GANJ_MONT END
 , GANJ_SEQN 
, CNTM_NUMB
, GANJ_GUBN
 [2014-01-06 08:12:44] ORA-00979: GROUP BY 표현식이 아닙니다.

보시는 바와 같이 에러가 납니다.

group by 절에 변수가 들어가서 에러가 나는데, 달리 대체할 방법을 모르겠습니다.ㅠㅠ

이런 식으로 대략 30개 정도의 비슷한 쿼리문이 UNION 걸려 있습니다.

당해년도와 당해를 제외한 전기누적(000000) 두 그룹으로 나눕니다.

설명이 부족하다면 말씀해 주세요. 이걸로 하루를 다 버렸네요...ㅠㅠ
by 마농 [2014.01.06 21:39:47]
간혹 사용하는 툴에 따라서 변수사용시 에러가 나기도 합니다.
이 경우엔 바로 Group By Sum하지 마시고.
변수 사용구문에 알리아스 주고 InLine View 로 감싸고
밖에서 알리아스로 Group By 하세요.

by 널쓰 [2014.01.07 09:24:38]

정말 감사합니다, 마농님! ㅠㅠ

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