ここに私がこれまでに持っているものがありますが、結果は間違っています。
SELECT c.CompanyName,
COUNT(o.OrderID) AS [Total Orders],
SUM(
(od.UnitPrice -
(od.UnitPrice * od.Discount))* Quantity) AS [Purchase Total]
FROM Customers AS c,
Orders AS o,
[Order Details] AS od
WHERE c.CustomerID = o.CustomerID
AND o.OrderID = od.OrderID
GROUP BY c.CompanyName
ORDER BY c.CompanyName;
私が抱えている問題はカウントにあり、2倍以上ずれています。これは、OrderID が Order Details テーブルに複数回表示されるためだと思います。ネストされた SELECT ステートメントが必要だと思いますが、その方法がわかりません。
最初のクエリから SUM() 式、Order Details、および AND 句を削除しますか? それとも私は離れていますか?
助けを借りて、COUNT フィールドが機能するようになりましたが、SUM フィールドが間違っています。これは私の最近の試みであり、すべての顧客に同じ価値をもたらします。
SELECT c.CompanyName,
COUNT(o.OrderID) AS [Total Orders],
(SELECT SUM(
(odIN.UnitPrice -
(odIN.UnitPrice * odIN.Discount)) * odIN.Quantity) AS [OrderTotal]
FROM [Order Details] AS odIN, Orders As oIN
WHERE odIN.OrderID = oIN.OrderID) AS [Purchase Total]
FROM
Customers AS c, Orders AS o
WHERE c.CustomerID = o.CustomerID
GROUP BY c.CompanyName
ORDER BY c.CompanyName;
クエリを思いどおりに完全に機能させることができませんでした。その後、間違ったデータを探していたのかもしれないことに気付きました。そこで、COUNT フィールドの名前を Num Products Purchased に変更しました。
私はまだ他の方法で作業したいと思っていますが、計算の1つを実行してクエリから呼び出すために使用できる一時テーブルまたはビューを作成する必要があると思います. それは私が理解しなければならないことです。
助けてくれてありがとう。