SQL SERVER,我的查询中出现错误
我需要知道查询中的问题在哪里,以及如何解决这个问题 SQL查询: 错误消息: Msg 8120,16级,状态1,第7行 列“OrderDetails.ProductID”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中SQL SERVER,我的查询中出现错误,sql,sql-server,sql-server-2008,sql-server-2012,Sql,Sql Server,Sql Server 2008,Sql Server 2012,我需要知道查询中的问题在哪里,以及如何解决这个问题 SQL查询: 错误消息: Msg 8120,16级,状态1,第7行 列“OrderDetails.ProductID”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中 当我删除由@RowNumber代码组成的行时,可以毫无问题地执行,但我需要在查询中使用它。GROUP BY也应该包含D.PRODUCTID: group by p.NameAr, p.NameEn, d.ProductID 不能应用不属于分组依据的订单依据字段
当我删除由@RowNumber代码组成的行时,可以毫无问题地执行,但我需要在查询中使用它。GROUP BY也应该包含D.PRODUCTID:
group by p.NameAr, p.NameEn, d.ProductID
不能应用不属于分组依据的订单依据字段 所以,您应该通过条款更改订单
SELECT
P.NameAr, P.NameEn,
Sum(p.OrderQty) AS SumQty ,
Sum(p.OrderQty * P.NewPrice) AS SumQtyPrice ,
ROW_NUMBER() OVER(ORDER BY P.NameAr ASC) AS Number,
'Soon' AS ColSoon
FROM OrderMasters M
INNER JOIN OrderDetails D ON D.OrderMasterID = M.OrderMasterID
INNER JOIN Products P ON P.ProductID = D.ProductID
INNER JOIN Categories C ON C.CategoryID = P.CategoryID
GROUP BY P.NameAr, P.NameEn
Order By P.NameAr
我将p.NameAr作为order字段来提供示例
SELECT
P.NameAr, P.NameEn,
Sum(p.OrderQty) AS SumQty ,
Sum(p.OrderQty * P.NewPrice) AS SumQtyPrice ,
ROW_NUMBER() OVER(ORDER BY D.ProductID ASC) AS Number,
'Soon' AS ColSoon,
D.OrderDetailsID
FROM OrderMasters M
INNER JOIN OrderDetails D ON D.OrderMasterID = M.OrderMasterID
INNER JOIN Products P ON P.ProductID = D.ProductID
INNER JOIN Categories C ON C.CategoryID = P.CategoryID
GROUP BY P.NameAr, P.NameEn,D.ProductID,D.OrderDetailsID
Order By D.OrderDetailsID
我正在为提示解决此问题。当按分组时,只有选择列表列可以按顺序排列。
SELECT
P.NameAr, P.NameEn,
Sum(p.OrderQty) AS SumQty ,
Sum(p.OrderQty * P.NewPrice) AS SumQtyPrice ,
ROW_NUMBER() OVER(ORDER BY D.ProductID ASC) AS Number,
'Soon' AS ColSoon,
D.OrderDetailsID
FROM OrderMasters M
INNER JOIN OrderDetails D ON D.OrderMasterID = M.OrderMasterID
INNER JOIN Products P ON P.ProductID = D.ProductID
INNER JOIN Categories C ON C.CategoryID = P.CategoryID
GROUP BY P.NameAr, P.NameEn,D.ProductID,D.OrderDetailsID
Order By D.OrderDetailsID