GROUP BY SQL语句错误

时间:2017-04-11 07:41:41

标签: sql group-by derby

我收到了这个声明

SELECT ITEM.ITEMID, ITEMNAME, QUANTITY AS "QUANTITY SOLD" 
FROM ORDERITEM,
     NBUSER."ORDER",
     PAYMENT,
     ITEM
WHERE NBUSER."ORDER".PAYMENTID = PAYMENT.PAYMENTID
  AND ITEM.ITEMID = ORDERITEM.ITEMID
  AND PAYMENT.PAYMENTDATE BETWEEN '4/1/2017' AND '4/30/2017' 
GROUP BY ITEM.ITEMID
ORDER BY ITEM.ITEMID DESC;

但它一直给我这个错误:

  

[例外,错误代码30,000,SQLState 42Y36]列引用   ' ITEM.ITEMNAME'无效,或者是无效表达式的一部分。对于   带有GROUP BY的SELECT列表,列和表达式为   selected可能只包含有效的分组表达式并且有效   聚合表达式。第1行第1列

我想将类似itemid的记录加在一起,并为所有相同的itemid添加数量。

1 个答案:

答案 0 :(得分:2)

  1. 首先,语句中有4个表,但只有2个表。 你有意这样做吗?如果没有,您需要再指定一个加入。

  2. 当您仅对select中的列的一部分使用group by时,对于您的情况,您必须具有select子句中剩余列的聚合函数,例如:

  3. select ITEM.ITEMID, max(ITEMNAME), sum(QUANTITY) AS "QUANTITY SOLD" ...
    
    1. 最好为每列使用表别名,否则,通常很难理解sql语句。 您已在此处定义了别名 - ITEM.ITEMIDITEM是别名),但不存在 - ITEMNAME