Oracle 选择具有相同速率列值的行

Oracle 选择具有相同速率列值的行,oracle,Oracle,在下表中,我希望Supp_ID对于相同的产品和路线代码组合具有相同的速率 所以,我应该得到除第一行以外的所有行 Supp_ID Product RouteCode Rate 25sdf-1 PROD1 2-00 0.0436 302qq-6 PROD1 1-00 0.0815 30wqa-6 PROD1 1-00 0.0815 20xdf-1 PROD1 3-00 0.0936 28xdf

在下表中,我希望Supp_ID对于相同的产品和路线代码组合具有相同的速率

所以,我应该得到除第一行以外的所有行

Supp_ID    Product  RouteCode  Rate
25sdf-1    PROD1    2-00       0.0436
302qq-6    PROD1    1-00       0.0815
30wqa-6    PROD1    1-00       0.0815 
20xdf-1    PROD1    3-00       0.0936
28xdf-1    PROD1    3-00       0.0936

您可以使用窗口功能在此处提供帮助:

SELECT *
FROM (SELECT supp_id, product, routecode, rate, 
             count(*) OVER (PARTITION BY rate, Supp_Id, Product) as count_of_shared_rate 
      FROM table) t1
WHERE count_of_shared_rate > 1

只是想澄清一下。。您只想要与至少一条其他记录共享速率的记录?我想要对相同的产品和路线代码组合具有相同速率的Supp\u ID。我以前尝试过类似的方法,但没有得到正确的结果result@SachinVaidya-“没有得到正确的结果”以什么方式?@mathguy-得到错误的结果。。我没有得到不同的供应商在相同的产品和路线价值相同的费率,这是理想的。另外,在建议的解决方案中,不确定为什么partition by只包含product而不包含route。@SachinVaidya-我只是在这里猜测原始公式中没有的信息。以下是正确的:对于每个SUPP\u ID,您可能有许多product和routeCode的组合。您只想返回那些对所有可能的product和routeCode组合具有相同速率的不同SUPP\u ID,而不仅仅是对一个这样的组合。在最初的问题中,这没有什么区别,因为每个SUPP\u ID只有一个product和routeCode的组合@萨钦瓦迪亚。。。。。然后:如果你需要所有的组合,你是否也需要在你开始比较利率之前,他们有相同的组合?或者只针对表中的组合?