Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Lọc các bản sao trong một bảng không có khóa chính

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

Kết quả:

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

Hãy thử trên 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. Các thủ tục được lưu trữ trong SQL không hoàn tất khi được gọi từ Python

  2. Cách sao chép dữ liệu bảng từ máy chủ từ xa sang máy chủ Cục bộ trong SQL Server 2008

  3. Bỏ qua một số cột nhất định khi sử dụng CHÈN SỐ LƯỢNG LỚN

  4. Đưa Pivot-Table được tạo động vào một bảng tạm thời

  5. MERGE INTO thứ tự chèn