Sql server 如何筛选子查询?

Sql server 如何筛选子查询?,sql-server,adventureworks,Sql Server,Adventureworks,这是基于 我的问题是: SELECT FirstName, LastName, (SELECT COUNT(SalesOrderID) FROM SalesOrderHeader WHERE SalesOrderHeader.ContactID = Contact.ContactID) AS OrderCount FROM Contact ORDER BY OrderCount desc 问题:我应该向查询中添加什么,以便它只显示大于20的OrderCount?我的输出不会有任何其他变化。

这是基于

我的问题是:

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

重写为联接聚合查询,然后使用
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;

重写为联接聚合查询,然后使用
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;

提示:
。我应该把它确切地放在哪里?因为它专门针对SQL Server,所以我添加了这样的标记。如果不是这样,请将标记编辑为正确的RDBMS。它位于
分组依据
之后。提示:
具有
。我应该确切地将其放置在哪里?因为它专门针对SQL Server,所以我添加了这样的标记。如果不是这样,请将标记编辑为正确的RDBMS。它位于
分组依据之后。