2016-11-30 1 views
0

다음과 같은 쿼리가 있습니다. (-) 연산자 = (AA.SOURCE_CREDIT - BB.SOURCE_DEBIT/1.1)이 있습니다. BR.AREA_ID별로 그룹화하고 싶습니다. 그냥 BR.AREA_ID. 그러나 그것은 나에게 오류 준 :oracle 쿼리에서 (-) 연산자로 그룹화

ORA-00979: not a GROUP BY expression

을 그리고 난에 의해 그룹에서 AA.SOURCE_CREDIT 및 BB.SOURCE_DEBIT을 추가해야합니다. 그러나 그 결과는 내가 원하는 것이 아닙니다. 내가 원하는 단지 AREA_ID.

SELECT 'SALES EU' AS DESCRIPTION, 
      (AA.SOURCE_CREDIT - BB.SOURCE_DEBIT/1.1) AS amount, 
      BR.AREA_ID 
    FROM   VI_REPORT_BK_PENJUALAN BK 
       JOIN 
        MST_BRANCH BR 
       ON BR.BRANCH_ID = BK.BRANCH_ID 
       LEFT OUTER JOIN 
       (SELECT JH.JOURNAL_NO, JD.SOURCE_CREDIT 
        FROM   TRX_JOURNAL_GL_HEADER JH 
           JOIN 
           TRX_JOURNAL_GL_DETAIL JD 
           ON JH.JOURNAL_NO = jd.JOURNAL_NO 
          JOIN 
           TRX_DELIVERY_CONFIRMATION DC 
          ON DC.DELIVERY_NO = JH.DOCUMENT_NO 
        WHERE JD.SOURCE_TYPE = '40100000') AA 
       ON (AA.JOURNAL_NO = BK.JOURNAL_NO) 
      LEFT OUTER JOIN 
       (SELECT JH.JOURNAL_NO, JD.SOURCE_DEBIT 
       FROM   TRX_JOURNAL_GL_HEADER JH 
          JOIN 
           TRX_JOURNAL_GL_DETAIL JD 
          ON JH.JOURNAL_NO = jd.JOURNAL_NO 
         JOIN 
          TRX_DELIVERY_CONFIRMATION DC 
         ON DC.DELIVERY_NO = JH.DOCUMENT_NO 
       WHERE JD.SOURCE_TYPE = '40502002') BB 
      ON (BB.JOURNAL_NO = BK.JOURNAL_NO) 
GROUP BY BR.AREA_ID, AA.SOURCE_CREDIT, BB.SOURCE_DEBIT 

이미 하위 쿼리로 그룹을 만들려고합니다. 그러나 여전히 작동하지 않습니다. 나도 구글에서 브라우징하고 있지만 내 사건과 같은 사건을 찾지 못했다.

+2

일반적인 GROUP BY 규칙은 다음과 같이 말합니다. GROUP BY 절이 지정된 경우 SELECT 목록의 각 열 참조는 그룹화 열을 식별하거나 집합 함수의 인수 여야합니다! – jarlh

+0

내 경우에 내가 사용해야하는 것은 무엇입니까? 또는 내 사건에 대해 찾아보기 위해 키워드에 대한 아이디어를 알려주십시오. 고마워요. –

+0

BR.AREA_ID에 JOIN 다음에 AA.SOURCE_CREDIT, BB.SOURCE_DEBIT 값이 여러 개있는 경우 어떻게해야할까요? 모두 표시하거나 합계 할 수 있습니까? – jarlh

답변

1

각 행마다 하나 이상의 행이있는 경우 쿼리에서 무엇을 돌려 주겠습니까? 예 :

AREA_ID | AA.SOURCE_CREDIT | BB.SOURCE_DEBIT 
    1 |  100   |  50 
    1 |  70   |  50 

그것은 당신이 SUM, MAX, AVG 또는 다른 것을 사용할 수 있도록 각 영역의 ID에 대해 하나의 행,이 확실하다.

SELECT 'SALES EU' AS DESCRIPTION, 
      (MAX(AA.SOURCE_CREDIT) - MAX(BB.SOURCE_DEBIT)/1.1) AS amount, 
      BR.AREA_ID 
... 

더 많은 결과가있을 경우 가장 적합한 집계 함수를 결정해야합니다.

+0

hooooo는 sooo 많이 감사한다. 내 경우에는 단 하나의 행. 이것이 내가 원하는거야. 고마워요. D –

관련 문제