我学习SQL,使用Northwind示例数据库而且我完全停留在非常简单的问题上: 我想列出一列中的所有产品名称以及第二列中每种产品的总销售量。 首先,我这样做了:
select p.ProductId
,sum(od.Quantity) as TotalQuantity
from Products p
join [Order Details] od
on p.ProductId=od.Productid
group by p.ProductId
这没关系 - 我有产品编号和总数量,但是当我尝试这样的东西时:
select p.productid
,p.ProductName
, sum(od.quantity) as TotalQuantity
from products p
join [Order details] od
on p.productid=od.productid
group by p.productid
我收到错误:
Msg 8120, Level 16, State 1, Line 1
Column 'products.ProductName' is invalid in the select list because
it is not contained in either an aggregate function or the GROUP BY clause.`
答案 0 :(得分:1)
当您使用汇总函数(例如sum
)时,您必须group by
select
您必须按如下方式修改您的查询
select p.productid, p.ProductName, sum(od.quantity) as TotalQuantity from
products p join [Order details] od on p.productid=od.productid
group by p.productid, p.ProductName
答案 1 :(得分:1)
鉴于您永远不会为单个ProductId获取不同的ProductNames,您也可以尝试:
select p.productid
, min(p.ProductName) as ProductName
, sum(od.quantity) as TotalQuantity
from products p
join [Order details] od
on p.productid=od.productid
group by p.productid