繁体   English   中英

您如何下载所有批次都符合条件的订单?

[英]How do you download orders where all batches will meet the condition?

我在mssql数据库中有两个表:订单和批处理。 每个订单可以有很多手。 成本保持在每批中。 我想绘制所有订单,其中他的每个订单的成本高于例如100。如果在订单的任何部分中成本不大于100,这将取消该订单的资格。 是否可以在一个查询中这样做?

一种简单的方法使用按顺序检查每个批次的汇总:

SELECT o.id
FROM orders o
INNER JOIN batches b
    ON o.batch_id = b.id
GROUP BY o.id
HAVING COUNT(CASE WHEN b.cost <= 100 THEN 1 END) = 0;

我认为最简单的方法是使用MIN()

SELECT b.order_id
FROM batches b
GROUP BY b.order_id
HAVING MIN(b.cost) >= 100;

如果您需要订单信息:

select o.*
from orders o
where not exists (select 1 from batches b where b.order_id = o.order_id and b.cost < 100);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM