我有以下数据
Order_ID Pallet_ID
O1 P1
O2 P1
O2 P2
O3 P2
O3 P3
O4 P4
订单可以在多个托盘上,并且多个订单可以在一个托盘上。我需要选择组成一个组的一组订单,因为它们都共享同一组托盘。在上面的测试数据中,有两个这样的组,{O1,O2,O3} 和 {O4},因为 O1、O2 和 O3 至少有一个托盘与该组的另一个成员共用。
现在我需要一些 SQL 来执行此操作。我试过(greg_test 包含上面的数据)
select distinct order_id
from greg_test
start with order_id = :order_id
connect by pallet_id = prior pallet_id
但这给了我一个循环引用错误(用户数据中的 ORA-01436 CONNECT BY 循环)。添加 nocycle 没有给出正确的集合。