SQL SERVER,我的查询中出现错误

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 不能应用不属于分组依据的订单依据字段

我需要知道查询中的问题在哪里,以及如何解决这个问题

SQL查询:

错误消息:

Msg 8120,16级,状态1,第7行

列“OrderDetails.ProductID”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中


当我删除由@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