【发布时间】:2012-05-21 14:43:21
【问题描述】:
我正在尝试做类似的事情:
SELECT c.id, c.name, COUNT(orders.id)
FROM customers c
JOIN orders o ON o.customerId = c.id
但是,SQL 不允许使用 COUNT 函数。执行时给出的错误是 c.Id 在选择列表中无效,因为它不在 group by 子句中或未聚合。
我想我知道问题所在,COUNT 只计算orders 表中的所有行。如何计算每个客户的数量?
编辑
完整查询,但它是荷兰语...这是我尝试过的:
select k.ID,
Naam,
Voornaam,
Adres,
Postcode,
Gemeente,
Land,
Emailadres,
Telefoonnummer,
count(*) over (partition by k.id) as 'Aantal bestellingen',
Kredietbedrag,
Gebruikersnaam,
k.LeverAdres,
k.LeverPostnummer,
k.LeverGemeente,
k.LeverLand
from klanten k
join bestellingen on bestellingen.klantId = k.id
没有错误但也没有结果..
【问题讨论】:
-
查询结束时需要
GROUP BY c.id, c.name。 -
您还缺少
orders表上的别名(上述查询可能无法编译)。这也导致所有答案的语法也无效。 -
@AaronBertrand 是无意的,现在已修复。
-
强烈建议不要将
'single quotes'用于列/对象别名;此语法已被弃用。使用[square brackets],或者,如果您必须使用引号,则使用"double quotes"。或者更好的是,首先避免使用需要分隔符的别名。
标签: sql select count sql-server-2008-r2