在表格中查找重复项

时间:2016-07-14 04:28:11

标签: sql sql-server tsql count group-by

我的表格包含多个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

2 个答案:

答案 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

当唯一字符串的数量不等于唯一的批次和订单数时 - 就是你的情况。