助けが必要な、やりがいのある削除ステートメントがいくつかあります。同じテーブルで複数の結合を持つ複数の重複レコードを削除しようとしています。
これが私のデータの例です
versionid(PK)FileID(FK)バージョンDeleteDate DeleteIndicator
1 1 1 12/01/2003 1
2 1 1 12/02/2003 1
3 1 1 null 0
4 2 2 01/02/2004 1
5 2 2 01/03/2005 1
6 2 2 01/03/2006 1
削除する必要のあるデータは、FileIdとバージョンが一致するすべての重複データです。DeleteDateは2011年4月1日未満で、DeleteIndicatorは1です。ただし、重複データから最も高いVersionIDを除外する必要があります。同じFileIdとバージョン
削除後、私はこれを残しておきます:
versionid(PK)FileID(FK)バージョンDeleteDate DeleteIndicator
2 1 1 12/02/2003 1
3 1 1 null 0
6 2 2 01/03/2006 1
上記のレコードを取得する複数の結合を使用した選択があります。それを削除ステートメントに変換する方法がわかりません。これが私のselectステートメントです。
SELECT t.VersionID ,
t.FileID ,
t.version ,
COUNT(*) ,
t.DeleteDate ,
t.DeleteIndicator
FROM tblFileVersions t
JOIN ( SELECT VersionID ,
FileID ,
MAX(VersionID) AS MaxVersion ,
DeleteDate ,
DeleteIndicator
FROM tblFileVersions
GROUP BY VersionID ,
FileID ,
DeleteDate ,
DeleteIndicator
) x ON t.FileID = x.FileID
WHERE t.DeleteDate < '2011/04/01'
AND t.DeleteIndicator = 1
AND t.VersionID < MaxVersion
GROUP BY t.VersionID ,
t.FileID ,
t.version ,
t.DeleteDate ,
t.DeleteIndicator ,
Version
HAVING COUNT(*) > 1
私がする必要があるのは、私が持っているものを取り、それを削除ステートメントにすることです。私のテキストフォーマットがすべて台無しになっている場合は申し訳ありませんが、これは私がここに投稿するのは初めてです。どんな助けでもあなたの時間に大いに感謝するでしょう。