我的表格包含多个lots (LOT_ID)
,每个批次包含多个products(PRODUCT_ID)
,每个产品下都有多个orders (ORDER_ID)
。我想知道order ID’s
对于给定products
LOT
的{{1}}
S.NO LOT_ID Product_ID Order_ID
1 101 P108 90001
2 101 P109 90001
3 101 P110 80900
4 102 S189 10098
5 102 S234 10087
6 102 S465 10098
7 102 S342 10050
8 103 L109 20090
9 103 L110 20098
10 103 L111 20020
期望的结果
S.NO LOT_ID Product_ID Order_ID
1 101 P108 90001
2 101 P109 90001
3 102 S189 10098
4 102 S465 10098
答案 0 :(得分:0)
我认为您应首先在order_id上应用group by,然后您将获得结果集。请检查发布的答案,但我还没有运行。
select LOT_ID, Product_ID, Order_ID
from <tableName>
where Order_ID IN (SELECT Order_ID FROM <tableName> where LOT_ID in (101,102)
GROUP BY Order_ID HAVING COUNT(*) > 1);
答案 1 :(得分:0)
重复计算,然后选择您需要的数量
select t.*, count(*) over (partition by t.LOT_ID, t.Product_ID, t.Order_ID) as c
, count(*) over (partition by t.LOT_ID, t.Order_ID) as c2
from t
当唯一字符串的数量不等于唯一的批次和订单数时 - 就是你的情况。