Sql server SQL Server:显示订单多于指定客户的客户列表

Sql server SQL Server:显示订单多于指定客户的客户列表,sql-server,Sql Server,伙计们,我有个小问题要解决;我有两个表[客户]和[订单],它们由CustomerID链接。很容易获得每个客户的订单数() SELECT c.CompanyName, COUNT(*) AS [Nbr of Orders] FROM [Orders] o INNER JOIN [Customers] c ON c.CustomerID = o.CustomerID GROUP BY c.CompanyName 但问题来自问题的最后一部分:我需要得到该列表,但只需要那些订单多于其中一个客户的列表(

伙计们,我有个小问题要解决;我有两个表[客户]和[订单],它们由CustomerID链接。很容易获得每个客户的订单数()

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.compagyname='XYZ') 我试图添加类似于WHERE子句的内容

WHERE COUNT(*) > (SELECT COUNT(*)
                  FROM [Orders] o
                  INNER JOIN [Customers] c
                  ON c.CustomerID = o.CustomerID
                  WHERE c.CompagnyName = 'XYZ')
SQL错误:p
看起来很可笑,我知道,但如果有人能告诉我我错过了什么

看起来您可以使用having子句。所以你的例子是
选择c.CompanyName,将(*)计数为[Nbr订单]
从[命令]o
内部连接[客户]c
在c.CustomerID=o.CustomerID上
按c.CompanyName分组

having count(*)>1

我认为您需要一个having子句,而不是WHERE子句,因为您正在对聚合函数进行筛选

尝试在求值语句(count()>(从[Orders]中选择count())或内部联接[Customers]c ON c.CustomerID=o.CustomerID其中c.compagyname='XYZ'))我想你想要一个HAVING子句,而不是WHERE子句,因为你是在聚合函数上过滤的。谢谢@thedumbrash,我只改变了HAVING的位置,效果很好!!!阿芙,我连一句评论都听不懂。我已经把它作为答案加上去了。谢谢