Tôi đã theo bảng SQL:Loại bỏ các hàng trùng lặp (dựa trên giá trị từ nhiều cột) từ bảng SQL
AR_Customer_ShipTo
+--------------+------------+-------------------+------------+
| ARDivisionNo | CustomerNo | CustomerName | ShipToCode |
+--------------+------------+-------------------+------------+
| 00 | 1234567 | Test Customer | 1 |
| 00 | 1234567 | Test Customer | 2 |
| 00 | 1234567 | Test Customer | 3 |
| 00 | ARACODE | ARACODE Customer | 1 |
| 00 | ARACODE | ARACODE Customer | 2 |
| 01 | CBE1EX | Normal Customer | 1 |
| 02 | ZOCDOC | Normal Customer-2 | 1 |
+--------------+------------+-------------------+------------+
(ARDivisionNo, CustomerNo,ShipToCode)
dạng một khóa chính cho bảng này.
Nếu bạn nhận thấy 3 hàng đầu tiên thuộc về cùng một khách hàng (Khách hàng kiểm tra), những người có ShipToCodes khác nhau: 1, 2 và 3. Tương tự như trường hợp với khách hàng thứ hai (ARACODE Customer). Mỗi khách hàng bình thường và khách hàng bình thường-2 chỉ có 1 bản ghi với một ShipToCode
.
Bây giờ, tôi muốn nhận kết quả truy vấn trên bảng này, nơi tôi sẽ chỉ có 1 bản ghi cho mỗi khách hàng. Vì vậy, đối với bất kỳ khách hàng nào, nơi có hơn 1 hồ sơ, tôi muốn giữ hồ sơ có giá trị cao nhất cho ShipToCode
.
tôi đã cố gắng điều khác nhau:
(1) Tôi có thể dễ dàng có được danh sách khách hàng với chỉ một bản ghi trong bảng.
(2) Với truy vấn sau đây, tôi có thể nhận danh sách tất cả khách hàng, những người có nhiều hơn một bản ghi trong bảng.
[Query-1]
SELECT ARDivisionNo, CustomerNo
FROM AR_Customer_ShipTo
GROUP BY ARDivisionNo, CustomerNo
HAVING COUNT(*) > 1;
(3) Bây giờ, để chọn đúng ShipToCode
cho mỗi bản ghi được trả về bởi truy vấn trên, tôi không thể tìm ra, làm thế nào để lặp qua tất cả các bản ghi được trả về bởi truy vấn trên.
Nếu tôi làm điều gì đó như:
[Query-2]
SELECT TOP 1 ARDivisionNo, CustomerNo, CustomerName, ShipToCode
FROM AR_Customer_ShipTo
WHERE ARDivisionNo = '00' and CustomerNo = '1234567'
ORDER BY ShipToCode DESC
Sau đó, tôi có thể nhận được các hồ sơ phù hợp với (: 00-1234567-Test khách hàng). Do đó, nếu tôi có thể sử dụng tất cả các kết quả từ truy vấn-1 trong truy vấn trên (truy vấn-2), thì tôi có thể nhận được các bản ghi đơn mong muốn cho các khách hàng có nhiều hơn một bản ghi. Điều này có thể được kết hợp với kết quả từ điểm (1) để đạt được kết quả mong muốn.
Một lần nữa, điều này có thể dễ dàng hơn cách tiếp cận mà tôi đang theo dõi. Xin vui lòng cho tôi biết làm thế nào tôi có thể làm điều này.
[Lưu ý: Tôi phải thực hiện việc này bằng cách sử dụng truy vấn SQL. Tôi không thể sử dụng các thủ tục được lưu trữ, vì tôi sẽ thực hiện điều này cuối cùng bằng cách sử dụng 'Scribe Insight', điều này chỉ cho phép tôi viết các truy vấn.]
bản sao có thể có của [Cách xóa hàng trùng lặp trong máy chủ sql?] (Http://stackoverflow.com/questions/18390574/how-to-delete-duplicate-rows-in-sql-server) –