我拿到了这份声明
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”无效,或者是无效表达式的一部分。对于具有组BY的选择列表,所选列和表达式只能包含有效的分组表达式和有效聚合表达式。第1行,第1栏
我想用类似的itemid加入记录,并将所有相同的itemid的数量相加。
发布于 2017-04-11 08:01:06
select ITEM.ITEMID, max(ITEMNAME), sum(QUANTITY) AS "QUANTITY SOLD" ...ITEM.ITEMID (ITEM是别名),但没有定义- ITEMNAME。发布于 2022-09-15 11:05:34
对于将来可能使用另一个DBMS的读者:根据标准版本和供应商,可以允许它在SELECT语句中额外使用列,这些列在功能上仅依赖于分组列。
资料来源: SQL 2008标准草案(链接),第二部分,7.12 ->通用规则第15号:
“如果T是一个分组表,则设G是T的分组列集。在每个<value expression>中,引用T列的每一列引用T的列都应引用函数上依赖于G的某些列C,或者包含在聚合查询为QS的聚合参数中。”
https://stackoverflow.com/questions/43339656
复制相似问题