Tôi có một bảng các nhân viên chứa khoảng 25 cột. Ngay bây giờ có rất nhiều bản sao và tôi muốn thử và loại bỏ một số các bản sao này.Xóa các bản sao có ít giá trị null
Trước tiên, tôi muốn tìm các bản sao bằng cách tìm nhiều bản ghi có cùng giá trị trong tên, họ, số nhân viên, số công ty và trạng thái.
SELECT
firstname,lastname,employeenumber, companynumber, statusflag
FROM
employeemaster
GROUP BY
firstname,lastname,employeenumber,companynumber, statusflag
HAVING
(COUNT(*) > 1)
Điều này mang lại cho tôi bản sao nhưng mục tiêu của tôi là tìm và lưu giữ bản ghi tốt nhất và xóa các bản ghi khác. "Bản ghi đơn tốt nhất" được xác định bởi bản ghi với số lượng giá trị NULL ít nhất trong tất cả các cột khác. Tôi có thể làm cái này như thế nào?
Tôi đang sử dụng Microsoft SQL Server 2012 MGMT Studio.
VÍ DỤ:
đỏ: DELETE xanh: GIỮ
CHÚ Ý: Có rất nhiều các cột trong bảng so với những gì bảng này cho thấy.
bạn có thể chỉnh sửa các hồ sơ mẫu câu hỏi và dự kiến sản lượng –
Chắc chắn, tôi đã thêm một ví dụ. – user3788671
Một phương pháp rất thô lỗ nhưng bạn có thể tính tổng chiều dài của văn bản trong mỗi cột và sắp xếp theo đó không? Hoặc cộng một IsNull()? – Liath