我有两张桌子。在表格 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 |
| ... | .... |
我想加入表 B 中SUM()
行的AMOUNT
,其中A_ID
与表格中的A_ID
匹配 A
我的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
此问题在我看过的网站上多次出现过。我无法找到一个对我的情况有所帮助,但在下面的问题链接中:
This issue here probably helps my problem
我知道我可能不得不使用分析来解决我的问题。我曾尝试过一些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
答案 0 :(得分:1)
您必须对非聚合列使用group by。
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