SELECT
ISNULL(Customer.Name, ' GRAND') AS CustomerName,
ISNULL(Item.ItemName, 'TOTAL') AS ItemName,
SUM(Item_Order.PriceAtDate) AS Price
FROM
Item_Order
INNER JOIN
Item ON Item_Order.ItemID = Item.ItemID
INNER JOIN
TheOrder ON Item_Order.OrderID = TheOrder.OrderID
INNER JOIN
Customer ON TheOrder.CustomerID = Customer.CustomerID
GROUP BY
Customer.Name, Item.ItemName, Item_Order.PriceAtDate WITH ROLLUP
ORDER BY
Customer.Name
結果:
CustomerName ItemName Price
------------ ------------------- -------
GRAND TOTAL 1380.46
Adrian Hammer 21.88
Adrian Hammer 21.88
Adrian Soldering Iron 30.54
Adrian Soldering Iron 30.54
Adrian TOTAL 52.42
Baker Valve 21.88
Baker Valve 21.88
Baker TOTAL 21.88
ご覧のとおり、ロールアップを使用して与えられた TOTAL は 30.54 と 21.88 を合計すると 52.42 になりますが、両方のアイテムが 2 回注文されます。したがって、個別の値だけでなく、実際の合計が必要になります。
誰かが私が間違っていることを知っていますか?