sql-server - 如何在 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;
解决方案
此处的详细信息很少,但我认为您只是想找到拥有超过 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
推荐阅读
- c++ - 在 Qt 中修改文件的 lastModified/lastAccessed/created 日期
- python - 如何在python函数中按DataFrame的日期过滤
- bash - 用于打开多个终端选项卡并运行一些脚本的 Bash 脚本
- c# - 在实现多个协变接口的类中选择协变接口的类型
- typo3 - 为什么 TYPO3 调用错误的文件引用表
- php - 使用通过 PHP 从 MySQL 数据库下载的 Adobe Reader 打开 PDF 文件时出现问题
- apache-spark - Spark Structured Streaming - 使用触摸文件优雅关闭
- c# - 拔下设备后,前台服务中的 Xamarin 循环(线程)不会继续
- ios - 我们可以只渲染CALayer的一小部分吗?
- python - 梯度下降没有收敛到它的最小值