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。它位于分组依据之后。