如何过滤子查询?

时间:2020-10-28 00:18:52

标签: sql-server adventureworks

这是基于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

1 个答案:

答案 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;
相关问题