我已经四处搜索并确实看到了有关此错误的问题,但我仍然无法找到正确的方法来编写它,我不断收到此代码的错误,该组有什么问题由?
SELECT
orders.customerid, orderdetails.orderid,
AMOUNT = unitprice * quantity
FROM
orderdetails
JOIN
orders ON orders.orderid = orderdetails.orderid
GROUP BY
orders.customerid, orderdetails.orderid
错误:
Msg 8120,Level 16,State 1,Line 1
中
专栏' xyz'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句
答案 0 :(得分:2)
您有group by
,但没有聚合功能。这是第一个暗示出错的原因。您在select
中有未汇总的列。这是一个更大的暗示。
我还会使用表别名重写查询:
select o.customerid, od.orderid, sum(od.unitprice * od.quantity)
from orders o join
orderdetails od
on o.orderid = od.orderid
group by o.customerid, od.orderid;
但是,如果我不得不推测,我猜你想要客户级别的总和,而不是订单级别,所以:
select o.customerid, sum(od.unitprice * od.quantity)
from orders o join
orderdetails od
on o.orderid = od.orderid
group by o.customerid;