我正在寫一個存儲過程。存儲過程將清點所有庫存條目,並返回該產品所有單位的總成本等。我的產品和供應商信息分組,然後當它涉及到的數量和價值我有這個乘法總之
SELECT i.SupplierID, i.SupplierName, p.ProductID, p.ProductName,
SUM(i.Quantity) AS Quantity,
SUM(i.Quantity * i.UnitCost) AS TotalValue,
SUM(i.Quantity * i.UnitCost) OVER() AS AllProductsTotal
FROM Inventory i
JOIN Products p on p.ProductID = i.ProductID
GROUP BY i.SupplierID, i.SupplierName, p.ProductID, p.ProductName
然而,當我嘗試運行創造...
消息8120,16級,因爲它不是在聚合函數或GROUP BY子句中包含的狀態1,行2
列「Inventory.Quantity」在選擇列表中無效。因爲它不是在聚合函數或GROUP BY子句中包含
消息8120,級別16,狀態1,2號線
列「Inventory.UnitCost」在選擇列表中無效。
列處於一種聚集體,只有在聚集,它們僅僅是在同一集合在一起。我究竟做錯了什麼?
應該「ie.ProductID」是「i.ProductID 「?在加入? – rjdevereux
'SUM()OVER()'不是彙總 – Serg
作爲@Serg說,也不會回到你想要的結果。你需要一個子查詢或其他'JOIN' –