我正在嘗試提出一個 Oracle SQL 查詢來列出“External_Order”表中的所有行,其中 order_dt 值不屬于同一 cust_id 的 order 表中的 start_dt 和 end_dt 值。有沒有辦法使用 SQL 來實作這一點而無需撰寫 PL/SQL?
**ORDERS**
CUST_ID , START_DT, END_DT
12345 , 01-01-2022, 01-15-2022
12345 , 02-01-2022, 02-28-2022
**EXTERNAL_ORDER**
CUST_ID, ORDER_DT, AMOUNT
12345, 01-10-2022, 100
12345, 01-16-2022, 200
12345, 01-27-2022, 150
12345, 02-03-2022, 300
**EXPECTED OUTPUT**
CUST_ID ORDER_ID , AMOUNT
12345, 01-16-2022, 200
12345, 01-27-2022, 150
uj5u.com熱心網友回復:
也許 EXISTS 可以解決問題?
SELECT eo.*
FROM EXTERNAL_ORDER eo
WHERE NOT EXISTS (
SELECT 1
FROM ORDERS o
WHERE eo.CUST_ID = o.CUST_ID
AND o.START_DT <= eo.ORDER_DT
AND o.END_DT >= eo.ORDER_DT
)
演示資料庫<>小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/436639.html
