sql >> データベース >  >> RDS >> Sqlserver

主キーのないテーブルでの重複のフィルタリング

    declare @T table
    (
      catalogue_code int,
      purcha varchar(5),
      stock_ varchar(5)
    )
    
    insert into @T values
    (1001,            'Box',     'Box'),
    (1001,            'Box',     'Box'),
    (1002,            'AA',      'AA'),
    (1002,            'MM',      'MM'),
    (1002,            'EA',      'EA'),
    (1002,            'Set',     'Set'),
    (1002,            'Kit',     'Kit'),
    (1004,            'Set',     'Set')
    
    ;with C as
    (
      select *,
             row_number() over(partition by catalogue_code 
                               order by case when purcha = 'EA'
                                             then 0
                                             else 1
                                        end) as rn
      from @T
    )
    select *
    from C
    where rn = 1
    

    結果:

    catalogue_code purcha stock_ rn
    -------------- ------ ------ --------------------
    1001           Box    Box    1
    1002           EA     EA     1
    1004           Set    Set    1
    

    SE-Data Explorer で試してみてください:https://data.stackexchange.com/stackoverflow/ q/114648/



    1. MariaDBでのGET_FORMAT()のしくみ

    2. MySQLで1日あたりの累積合計ユーザーを取得する方法

    3. Postgresqlテーブルの最大(使用可能な)行数

    4. WHERE条件での重複キー更新時