Trong bài đăng này, tôi đang chia sẻ một tập lệnh để sao chép một bản ghi duy nhất từ bảng này sang bảng khác.
Bạn có thể thực hiện hoạt động này bằng mệnh đề ROW_NUMBER () và PARTITION BY.
Mệnh đề phân vùng này đã xác định tập hợp các bản ghi trùng lặp và row_number chỉ định một ID cho tập hợp này.
Dưới đây là một minh chứng đầy đủ:
Đầu tiên hãy tạo bảng với một số bản ghi:
1 2 3 4 5 6 7 8 9 10 | CREATE TABLE dbo.tbl_First ( ID INTEGER IDENTITY(1,1) ,Name VARCHAR(250) ) GO INSERT INTO dbo.tbl_First(Name) VALUES('ABC'),('XYZ'),('ABC'),('EFG'),('PQR'),('EFG'),('RND'),('YFQ'),('XVK'),('ABC') GO SELECT *FROM dbo.tbl_First ORDER BY Name GO |
Kết quả của câu lệnh chọn ở trên là:
Bạn có thể thấy ABC và EFG là tên trùng lặp.
Tạo bảng thứ hai với sao chép dữ liệu duy nhất từ bảng đầu tiên:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | CREATE TABLE dbo.tbl_Second ( ID INTEGER ,Name VARCHAR(250) ) GO INSERT INTO dbo.tbl_Second SELECT ID ,Name FROM ( SELECT ID ,Name ,ROW_NUMBER() OVER (PARTITION BY Name ORDER BY ID) AS RowNumber FROM dbo.tbl_First AS T )AS T WHERE T.RowNumber = 1 GO SELECT *FROM dbo.tbl_Second GO |
Kết quả của bảng thứ hai trên là:
Bây giờ bạn có thể thấy tất cả các tên là duy nhất và chỉ được sao chép bảy bản ghi duy nhất.