これらのアドレスを分割する適切な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
の行は、すべて「重複した」アドレスまたは追加のアドレスです。これを2番目のテーブルに挿入します。
絶対完璧!どうもありがとうございました! – KenD