2016-11-30 62 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列表中的每個列引用都必須標識分組列或作爲set函數的參數! – 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 

它你肯定只有一個每個區域ID行,所以你可以用SUM,MAX,AVG或其他任何東西。

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

如果可以有更多的結果,你應該決定什麼樣的聚合函數最適合。

+0

hooooo謝謝sooo多。在我的情況只有一行。這就是我要的。非常感謝你:D –