[英]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.