2015-09-15 29 views
1

好的,我有这个小问题需要解决;我有两个表格[Customers]和[Orders],它们通过CustomerID链接。这很容易通过每个客户获得订单数()...SQL Server:显示客户列表的订单数多于指定客户的数量

SELECT c.CompanyName, COUNT(*) AS [Nbr of Orders] 
FROM [Orders] o 
INNER JOIN [Customers] c 
ON c.CustomerID = o.CustomerID 
GROUP BY c.CompanyName 

但是从问题的最后一部分来问题:我需要获得该名单,但只有那些有多个订单这些客户(c.CompagnyName =“XYZ”) 我尝试添加这样的WHERE子句

WHERE COUNT(*) > (SELECT COUNT(*) 
        FROM [Orders] o 
        INNER JOIN [Customers] c 
        ON c.CustomerID = o.CustomerID 
        WHERE c.CompagnyName = 'XYZ') 

SQL错误:P 样子可笑,但我知道,如果有人可以告诉我,我错过!

+0

尝试把周围的评估声明(计数括号(*)>(SELECT COUNT(*)FROM [常规] O INNER JOIN [客户]ç ON c.CustomerID = o.CustomerID WHERE c.CompagnyName = 'XYZ')) – Dane

+0

我想你想HAVING子句而不是WHERE子句,因为您正在过滤聚合函数。 –

+0

谢谢@TheDumbRadish,我只改变了在哪里,并且工作很棒!阿夫,我不能大拇指评论:/ – BlinkSun

回答

1

看起来你可以使用having子句。所以,你的例子是 SELECT c.CompanyName, COUNT(*) AS [Nbr of Orders] FROM [Orders] o INNER JOIN [Customers] c ON c.CustomerID = o.CustomerID GROUP BY c.CompanyName having count(*) > 1

0

我想你想HAVING子句而不是WHERE子句,因为你是在一个聚合函数过滤

相关问题