Sql server SQL Server:显示订单多于指定客户的客户列表
伙计们,我有个小问题要解决;我有两个表[客户]和[订单],它们由CustomerID链接。很容易获得每个客户的订单数()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 但问题来自问题的最后一部分:我需要得到该列表,但只需要那些订单多于其中一个客户的列表(
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的位置,效果很好!!!阿芙,我连一句评论都听不懂。我已经把它作为答案加上去了。谢谢