【发布时间】:2013-08-15 13:20:34
【问题描述】:
假设我有三个表——Orders、OrderDetails 和 ProductType——并且 Orders 表包含一个 Customer 列。我需要做的是编写一个查询,它将向我显示客户列表以及每个客户下了多少订单,以及按另一列显示和分组,这是一个基于特定类型产品的布尔值 - 比如说, 电话 - 按顺序排列。
例如,我们可能有:
客户 |订单数量 |包括电话
---------------------------------
詹姆逊 | 3 |是的
史密斯 | 5 |是的
韦伯 | 1 |是的
亚当斯 | 2 | |没有
詹姆森 | 1 |没有
史密斯 | 7 |没有
韦伯 | 2 |没有
但是,当我尝试为此编写查询时,我得到了多行具有相同的 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
【问题讨论】:
-
如果您使用 OrderDetails 加入订单,则 COUNT 将为您提供已订购产品的数量,而不是订单数量。这就是你需要的?
-
@BogdanSahlean - S.M 的回答正是我所需要的。
-
那么您的问题是错误的:“我需要做的是编写一个查询,该查询将向我显示客户列表以及每个客户下了多少订单”。你应该改写你的问题。
标签: sql sql-server-2008 group-by