在oracle查询中使用( - )运算符进行分组

时间:2016-11-30 08:54:54

标签: sql oracle plsql

我有如下查询。有(-)operator = (AA.SOURCE_CREDIT - BB.SOURCE_DEBIT / 1.1)。我想按BR.AREA_ID进行分组。只是BR.AREA_ID。但它给了我错误:

  

ORA-00979:不是GROUP BY表达式

我必须在group by中添加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浏览,但我没有像我的情况那样找到案例。

1 个答案:

答案 0 :(得分: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
...

如果您可以决定更多结果,那么Aggregate函数最适合。