Msg 8120,Level 16,State 1,Line 1 SQL

时间:2018-02-19 13:37:56

标签: sql sql-server

我已经四处搜索并确实看到了有关此错误的问题,但我仍然无法找到正确的方法来编写它,我不断收到此代码的错误,该组有什么问题由?

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子句

1 个答案:

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