私は、Order、Order_Item、Item、SupplierおよびSupplier_Itemというテーブルを持つ簡単な注文データベースを持っています。アイテムは、アイテムを異なる価格で一覧表示する複数のサプライヤを持つことができます。SQL Server - 最も安いサプライヤ価格を得る
私は過去7日間の注文とそのアイテムを見て、その注文アイテムの最も安いサプライヤー価格を返すクエリを作成しようとしています。
私はこれを試みた:3000行(結果が不正確であるが、それは各注文アイテム(約100)の行を返す必要があり
SELECT O.Order_Id, O.Site_Id, O.Order_Date,
OI.Item_ID, OI.Quantity, OI.Supplier,
I.Item_Name, I.Category,
MIN(SI.Price) AS Price , SI.Supplier_ID,
S.Supplier_Name
FROM [Order_Item] OI
INNER JOIN [Order] O ON O.Order_ID = OI.Order_ID
INNER JOIN Item I ON OI.Item_ID = I.Item_ID
INNER JOIN Supplier_Item SI ON SI.Item_ID = I.Item_ID
INNER JOIN Supplier S ON S.Supplier_ID = SI.Supplier_ID
WHERE O.Order_Date > DATEADD(DAY, - 7, GETDATE())
GROUP BY O.Order_ID, O.Site_ID, O.Order_Date, OI.Item_ID, OI.Quantity,
OI.Supplier, I.Item_Name, I.Category, SI.Supplier_ID,
S.Supplier_Name
が、各注文項目とサプライヤの価格行を返します)。
誰かが私がどこに間違っているのかを示すことができれば、大きな助けになるでしょう。
ありがとう、それは私が初めて見たOVER - PARTITION B Y、それはかなり分かりやすい –