次のサンプルデータベーススキーマがあります
http://i.stack.imgur.com/EKNxY.jpg
私が欲しいのは:
A)すべての販売、ユーザーごとのグループ化。
B)割引、ユーザーごとのグループ化。
私は次のクエリを使用しています:
FOR A:
SELECT u.UserID, u.UserName, Sum(d.Quantity * i.Price) AS 'Sales'
FROM OrderDetails d
INNER JOIN Orders o ON o.OrderID = d.OrderID
INNER JOIN Item i ON i.ItemID = d.ItemID
INNER JOIN [User] u ON u.UserID = o.UserID
GROUP BY u.UserID, u.UserName
結果:
UserID UserName Sales
1 Mobeen 11060
2 Cashier 25960
Bの場合:
SELECT u.UserID, u.UserName, Sum(r.DiscountAmount) AS Discounts
FROM Receipt r
INNER JOIN Orders o ON o.OrderID = r.OrderID
INNER JOIN [User] u ON u.UserID = o.UserID
GROUP BY u.UserID, u.UserName
結果:
UserIDUserName
割引
1Mobeen 50
2 Cashier 310
しかし、その後、両方のクエリを組み合わせることにしましたが、問題は、異なる結果が得られることです。 クエリは次のとおりです。
SELECT u.UserID,
u.UserName,
Sum(d.Quantity * i.Price) AS 'Sales',
Sum(r.DiscountAmount) AS 'Discounts'
FROM OrderDetails d
INNER JOIN Orders o ON o.OrderID = d.OrderID
INNER JOIN Item i ON i.ItemID = d.ItemID
INNER JOIN [User] u ON u.UserID = o.UserID
INNER JOIN Receipt r ON r.OrderID = o.OrderID
GROUP BY u.UserID, u.UserName
結果:
UserIDUserName
販売割引
1Mobeen 2270502
キャッシャー25760430