解析ORA-00937:在求和行时不是单组组函数

时间:2017-08-22 08:35:43

标签: sql oracle

我有两张桌子。在表格 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

1 个答案:

答案 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