这是基于AdventureWorks sample database.
这是我的查询:
SELECT FirstName, LastName,
(SELECT COUNT(SalesOrderID)
FROM SalesOrderHeader
WHERE SalesOrderHeader.ContactID = Contact.ContactID) AS OrderCount
FROM Contact
ORDER BY OrderCount desc
问题:我应该在查询中添加些什么,以便它仅显示大于20的OrderCount?我的输出没有其他改变。我尝试了一下,但没有成功:
WHERE SalesOrderHeader.ContactID = Contact.ContactID AS OrderCount AND COUNT(SalesOrderID) > 20
答案 0 :(得分:2)
重写为联接聚合查询,然后使用HAVING
:
SELECT
c.FirstName,
c.LastName,
COUNT(s.SalesOrderID) AD OrderCount
FROM Contacts c
INNER JOIN SalesOrderHeader s
ON c.ContactID = s.ContactID
GROUP BY
c.FirstName,
c.LastName
HAVING
COUNT(s.SalesOrderID) > 20;