我有如下查询。有(-
)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浏览,但我没有像我的情况那样找到案例。
答案 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函数最适合。