Вам необходимо назвать основное выражение псевдонимом. Например, это работает:
SELECT * FROM (SELECT 1 AS One) O WHERE One = 1
Но это не так:
SELECT * FROM (SELECT 1 AS One) WHERE One = 1
Попробуйте это:
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
) T
WHERE 'Number of orders' > 150;
Кроме того, как только Ууердо ушел,Лучше использовать [Квадратные скобки] вместо «Одиночных кавычек», чтобы назвать их и обратиться к столбцу [Количество заказов]. Я считаю, что есть параметр, который определяет, допускаются ли одинарные кавычки, но квадратные скобки являются стандартом.