假设我有三个表——Orders、OrderDetails 和 ProductType——并且 Orders 表包含一个 Customer 列。我需要做的是编写一个查询,它将向我显示客户列表以及每个客户下了多少订单,以及按另一列显示和分组,这是一个基于特定类型产品的布尔值 - 比如说,电话 - 是在订单。
例如,我们可能有:
Customer | NumOrders | IncludesPhone
---------------------------------
Jameson | 3 | Yes
Smith | 5 | Yes
Weber | 1 | Yes
Adams | 2 | | No
Jameson | 1 | No
Smith | 7 | No
Weber | 2 | No
但是,当我尝试为此编写查询时,我得到了多行具有相同的 Customer 和 IncludesPhone 值,每行具有不同的 NumOrders 值。为什么会这样?我的查询如下:
SELECT Customer, COUNT(Customer) AS NumOrders, CASE WHEN (ProductType.Type = 'Phone') THEN 'Yes' ELSE 'No' END AS IncludesPhone
FROM Orders INNER JOIN OrderDetails INNER JOIN ProductType
GROUP BY Customer, Type
Order By IncludesPhone, Customer