我想知道使用orderid
语句按GROUP BY
对每个结果进行分组的最佳方法。
当前查询:
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
数据库图表:
示例结果 这是我从当前代码中得到的结果的一部分。我希望所有具有相同ID的订单应该组合在一起。
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
答案 0 :(得分:1)
一个简单的例子,如果你还想获得部分信息:
SELECT orderid,
partid,
sum(Qty)
FROM yourTable
GROUP BY oderid, partid
因此,这会按oderid
和partid
对表格进行分组,并为每个组返回Qty
的总和。有关如何使用group by
的详细信息,请给予Google一次机会。我立即找到one tutorial。
答案 1 :(得分:0)
此外,您可以使用带有DISTINCT关键字的SELECT语句而不是GROUP BY子句
SELECT DISTINCT
Col1,
Col2,
...
FROM ...