【问题标题】:Select rows with a duplicate ID but different value in another column选择具有重复 ID 但在另一列中具有不同值的行
【发布时间】:2022-07-18 21:35:41
【问题描述】:

我有一张这样的桌子

我想选择多次出现的 Itemid 并具有不同的 Rate with group by Masterid

输出应该是这样的:

【问题讨论】:

    标签: sql sql-server sql-server-2008


    【解决方案1】:

    您可以尝试以下方法:

    SELECT masterid, detailid, itemid, rate FROM mytable
    WHERE (masterid, detailid, rate) IN
    (
        SELECT masterid, detailid, rate FROM mytable t
        JOIN mytable o ON o.masterid = t.masterid
            AND o.detailid = t.detailid AND o.rate <> t.rate
        GROUP BY t.masterid, t.detailid, t.rate
        HAVING COUNT(*) >= 2
    )
    

    子查询中的内连接确保仅出现具有不相等计数器部分的行。 或者您可以在外部查询中添加另一个子查询条件:

    AND EXISTS
    (
        SELECT * FROM mytable o
        WHERE o.masterid = t.masterid AND o.detailid = t.detailid AND o.rate <> t.rate
    )
    

    【讨论】:

    • 我只想要在 SQL Server 2008 中根据 MasterID 具有速率差异的行
    【解决方案2】:

    我相信您正在寻找如下查询

    select t1.* from t t1 
    join 
    (
       select masterid,itemid
       from t
       group by masterid,itemid
       having count(distinct rate )>1
    )t2 
       on t1.masterid=t2.masterid and t1.itemid=t2.itemid
    order by masterid,detailid
    

    这是working db fiddle

    【讨论】:

      【解决方案3】:

      试试下面的代码:

       Select masterid, detailid, rate, count(*) as count from Mytable 
      group by masterid, detailid, rate
      having count(*) > 1
      

      【讨论】:

        猜你喜欢
        • 2017-02-14
        • 1970-01-01
        • 2019-05-31
        • 2017-12-31
        • 2015-07-17
        • 2012-05-25
        • 2022-11-17
        • 1970-01-01
        • 2017-12-24
        相关资源
        最近更新 更多