이러한 주소를 구분하는 적절한 CTE (Common Table Expression)를 생성 할 수 있어야합니다. 당신은 많은 세부 사항을 제공하지 못했습니다. 그래서 저는 컬럼과 테이블 이름을 만들어 보았습니다.
이 시도 - 그것은 당신의 테이블에서 모든 중복을 삭제합니다 :
;WITH DuplicateAddr AS
(
SELECT
(list of columns you need),
ROW_NUMBER() OVER (PARTITION BY Street,ZipCode,City
ORDER BY DateLastChange DESC) 'RowNum'
FROM dbo.Addresses
)
SELECT (list of columns)
FROM DuplicateAddr
WHERE RowNum > 1
GO
을이 CTE로, "파티션"데이터가 열 목록에 따라 - 당신이 사용해야하는 사용합니다. 데이터의 각 파티션 (예 : Street,ZipCode,City
으로 정의 된 각 주소)은 일부 주문 (CTE에서 정의한대로 - DateLastChange
을 하나의 가능성으로 선택)에 따라 일련 번호를 가져옵니다.
따라서 RowNum = 1
이있는 행은 "SELECT (columns) FROM DuplicateAddr
"대신 "첫 번째"주소 집합을 구성합니다. 당연히 그 기준에 따라 INSERT INTO ....
을 수행 할 수도 있습니다.
RowNum > 1
이있는 모든 행은 "중복"주소이거나 추가 주소입니다. 두 번째 테이블에 삽입하십시오.
절대적으로 완벽합니다! * 매우 * 많이 감사합니다! – KenD