2016-11-30 2 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 

サブスクリプション内で既にグループを作成しようとしています。しかし、まだ動作しません。私もgoogleでブラウジングしていますが、私の場合のようなケースは見つかりませんでした。

+2

GROUP BY句が指定されている場合、SELECTリストの各列参照は、グループ化列を特定するか、または集合関数の引数でなければなりません。 – jarlh

+0

私は私の場合に使用する必要がありますか?私の場合について調べるためのキーワードを考えてください。 –

+0

BR.AREA_IDにJOINの後にいくつかの(異なる)AA.SOURCE_CREDIT、BB.SOURCE_DEBITの値がある場合、それらで何をしたいですか?それらをすべて表示するか、合計しますか? – jarlh

答えて

1

各行に1つより多くの行がありますが、そのクエリが返すものは何ですか? 例:

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

それあなたがSUM、MAX、AVGまたは何か他のものを使用することができますように、各エリアIDに対して1つだけの行があることを確認しています。

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

さらに多くの結果がある場合は、どの集計関数が最適かを決定する必要があります。

+0

私の場合は1行だけです。これは私が欲しいものです。ありがとうございました:D –