首页 > 解决方案 > 如何在 SQL 中上层 SELECT 的 WHERE 条件中使用子查询中的自定义字段

问题描述

我正在尝试做这样的事情,但出现错误并且无法以正确的方式完成最后一个 WHERE?

SELECT *
FROM
(
SELECT s.SupplierID, s.CompanyName, 
(SELECT COUNT(*)
FROM dbo.Orders o
LEFT JOIN dbo.[Order Details] od ON o.OrderID = od.OrderID
LEFT JOIN dbo.Products p ON od.ProductID = p.ProductID
WHERE SupplierID = s.SupplierID) AS N'Number of orders'
FROM dbo.Suppliers s
) 
WHERE 'Number of orders' > 150;

标签: sql-server

解决方案


此处的详细信息很少,但我认为您只是想找到拥有超过 150 个订单的供应商。您可以在此处使用具有基本聚合的查询,并使其变得更简单。

SELECT s.SupplierID
    , s.CompanyName
    , COUNT(*)
FROM dbo.Orders o
JOIN dbo.[Order Details] od ON o.OrderID = od.OrderID
JOIN dbo.Products p ON od.ProductID = p.ProductID
join dbo.Suppliers s on s.SupplierID = p.SupplierID
group by s.SupplierID
    , s.CompanyName
having count(*) > 150

推荐阅读