sql - 更好地查询以获取过去 90 天内没有任何销售的产品列表?
问题描述
我的代码超级笨拙。你们能否提供一个更好的方法来获得结果
表:产品和订单
SELECT
Products.ProductID
FROM
Products
JOIN Orders
ON Products.ProductID = Orders.ProductID
WHERE
Products.ProductID NOT IN (
SELECT
Products.ProductID
FROM
Products
JOIN Orders
ON Products.ProductID = Orders.ProductID
WHERE
Orders.OrderDate >= DATEADD(day, -90, GETDATE())
GROUP BY
Products.ProductID
)
GROUP BY
Products.ProductID
解决方案
怎么样NOT EXISTS
,没有加入?
select p.*
from products p
where not exists (select 1
from orders o
where o.product_id = p.product_id and
o.orderdate >= dateadd(day, -90, getdate())
);
推荐阅读
- javascript - React 无法识别 DOM 元素上的 `activeKey` 属性
- wxwidgets - wxWidgets wxRichTextCtrl 没有水平滚动
- ionic3 - 离子3中的按钮切换无法滚动到底部
- gitlab - 已删除的存储库仍出现在项目列表中
- matlab - 在符号表达式Matlab中将长十进制转换为科学记数法
- windows - 虽然我已将 Windows 设置为法语区域格式并将逗号设置为十进制符号,但 UWP CurrencyFormatter 仍显示一个点
- vb.net - 如何在没有任何数据库的情况下在 Visual Basic 中过滤 GridView
- sql - 如何约束这样的条件?SQL 服务器
- python - 将项目添加到字典列表中具有相同值的字典
- visual-studio - Visual Studio 2017 为解决方案资源管理器创建扩展