我想知道使用GROUP BY
語句將每個結果分組orderid
的最佳方法。使用GROUP BY按orderid分組訂單
當前查詢:
SELECT T.orderid,
Inventory.partid,
Inventory.Description,
OrderItems.Qty,
'$' + STR(Inventory.price,8,2) AS UnitPrice,
'$' + STR(OriginalCost,8,2) AS OriginalCost,
'$' + STR(QuantityDiscount,8,2) AS QuantityDiscount,
'$' + STR((OriginalCost - QuantityDiscount),8,2) AS FinalCost
FROM (
SELECT Orders.Orderid, Inventory.partid, Description, Qty,
Inventory.price AS UnitPrice,
(OrderItems.Qty * Inventory.price) AS OriginalCost,
CASE WHEN OrderItems.Qty >= 5
THEN ((OrderItems.Qty * Inventory.price) * .05)
WHEN OrderItems.Qty >= 10
THEN ((OrderItems.Qty * Inventory.price) * .10)
ELSE 0
END AS QuantityDiscount
FROM Orders,OrderItems,Inventory
) AS T
JOIN OrderItems ON OrderItems.orderid = OrderItems.orderid
JOIN Inventory ON ORDERITEMS.partid = Inventory.partid
ORDER BY T.QTY DESC
的DB圖:
示例結果 這是結果我從目前得到的代碼的一部分。我希望所有具有相同ID的訂單應該組合在一起。
SELECT orderid,
partid,
sum(Qty)
FROM yourTable
GROUP BY oderid, partid
所以,這組由oderid
和partid
表,並返回Qty
各組的總和:
orderid partid Description Qty UnitPrice OriginalCost QuantityDiscount FinalCost
------- ------ ----------- ---- --------- ------------ ---------------- ---------
6148 1006 gizmo 1 $ 11.35 $ 113.50 $ 5.67 $ 107.83
6148 1006 gizmo 1 $ 11.35 $ 113.50 $ 5.67 $ 107.83
6148 1006 gizmo 1 $ 11.35 $ 113.50 $ 5.67 $ 107.83
6148 1006 gizmo 1 $ 11.35 $ 113.50 $ 5.67 $ 107.83
6148 1006 gizmo 1 $ 11.35 $ 113.50 $ 5.67 $ 107.83
6148 1006 gizmo 1 $ 11.35 $ 113.50 $ 5.67 $ 107.83
6148 1006 gizmo 1 $ 11.35 $ 113.50 $ 5.67 $ 107.83
6148 1006 gizmo 1 $ 11.35 $ 113.50 $ 5.67 $ 107.83
6148 1006 gizmo 1 $ 11.35 $ 113.50 $ 5.67 $ 107.83
所以,你要9行絕對相同的? –
到目前爲止您嘗試了什麼?如果你只是用'T.orderid'分組,你不能使用任何'Inventory.partid'等字段。 –
我不希望行是相同的,他們不應該是。 – zeisler