这是我到目前为止所拥有的,但结果是错误的。
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;
我遇到的问题是计数,它减少了两倍或更多。我相信这是因为 OrderID 多次出现在 Order Details 表中。我想我需要一个嵌套的 SELECT 语句,但我不确定该怎么做。
我会从第一个查询中删除 SUM() 表达式、订单详细信息和 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。
我仍然希望以另一种方式工作,但我认为这将需要创建一个临时表或视图,可用于执行其中一个计算,然后从查询中调用它。这是我必须弄清楚的事情。
感谢您尝试提供帮助。