Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Filtrowanie duplikatów w tabeli bez klucza podstawowego

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

Wynik:

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

Wypróbuj w SE-Data Explorer:https://data.stackexchange.com/stackoverflow/ q/114648/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wydajność serwera SQL TOP IO Query -2

  2. Jak automatycznie reseedować po użyciu identity_insert?

  3. Jak wyodrębnić lub przekonwertować dane czasu z ciągu w SQL Server

  4. SQL Server:Do czego służą instrukcje wsadowe (tj. przy użyciu GO)?

  5. SSRS:Jak dodać opcję Wszystkie do filtra rozwijanego SSRS?