解决 ORA-00937:不是对行求和的单组组函数



我有两个表。在表A中,我有:

| A_ID | DESCRIP  | 
+------+----------+
|   1  |  Thing1  |
|   2  |  Thing2  |
|   3  |  Thing3  |
| .... |   .....  |

在表B中,我有:

| A_ID | Amount  | 
+------+----------+
|   1  |   5.5    |
|   1  |   8.2    |
|   1  |  10.5    |
|   2  |   7.4    |
|   2  |   1.7    |
|   2  |  15.9    |
|  ... |    ....  |

我想加入表BAMOUNT行的SUM(),其中A_ID与表A中的A_ID匹配。

我的 SQL 目前是这样的:

SELECT 
A.A_ID,
A.DESCRIP,
SUM(B.AMOUNT)
FROM 
A
LEFT JOIN
B
ON
A.A_ID = B.A_ID
ORDER BY ARINVT.ID

这个问题在我看到的这个网站上出现了很多次。我无法找到一个对我的情况有很大帮助的人,但在下面的问题链接中:

这里的这个问题可能有助于我的问题

我知道我可能必须使用分析来解决我的问题。我尝试关注一些 Youtube 视频来做到这一点,但不能完全掌握。如果有人可以在链接的问题中更多地解释接受的答案,将不胜感激!

编辑:添加了正在使用的实际SQL代码。当我认为我需要分析时正在简化

当前 SQL:

SELECT 
ARINVT.ID,
ARINVT.CLASS,
ARINVT.ITEMNO,
ARINVT.DESCRIP,
ARINVT.ONHAND,
SUM(DAY_USE_TOTAL.TOT_MAT_QTY)
FROM 
IQMS.ARINVT ARINVT
LEFT JOIN
IQMS.DAY_USE_TOTAL DAY_USE_TOTAL
ON
ARINVT.ID = DAY_USE_TOTAL.ARINVT_ID
WHERE CLASS = 'PL'
GROUP BY ARINVT.ID,ARINVT.DESCRIP

我使用GROUP BY时遇到的错误是:ORA-00979: not a GROUP BY expression

您必须对非聚合列使用分组依据。

SELECT ARINVT.ID,
ARINVT.CLASS,
ARINVT.ITEMNO,
ARINVT.DESCRIP,
ARINVT.ONHAND,
SUM (DAY_USE_TOTAL.TOT_MAT_QTY)
FROM IQMS.ARINVT ARINVT
LEFT JOIN IQMS.DAY_USE_TOTAL DAY_USE_TOTAL
ON ARINVT.ID = DAY_USE_TOTAL.ARINVT_ID
WHERE CLASS = 'PL'
GROUP BY ARINVT.ID,
ARINVT.CLASS,
ARINVT.ITEMNO,
ARINVT.DESCRIP,
ARINVT.ONHAND

最新更新