既存のデータを新しいデータ テーブルに転送したいと考えています。
置換のあるテーブルがあります:-ID-currentItemId-formerItemId-contentId
同じコンテンツに対して、currentItemId と 以前のItemId の組み合わせに対して複数のエントリがある可能性があります。
今の様子をお見せしましょう:
ID_T1 currentItemId formerItemId contentId
1 100 200 300
2 100 200 301
3 100 200 302
4 105 201 303
5 105 201 304
6 110 205 320
7 111 206 321
8 120 204 322
9 130 208 323
10 130 208 324
ここで、formerItemId と currentItemId の組み合わせごとに TOP ID を選択したいと思います。
ID ID_T1 contentId
1 1 300
2 1 301
3 1 302
4 4 303
5 4 304
6 6 320
7 7 321
8 8 322
9 9 323
10 9 324
両方のテーブルには、タイムスタンプとその他のデータも含まれています。例をわかりやすくするために、それを含めていません。
自己結合 (成功なし)、ネストされた選択 (元の組み合わせに対して正しい値が得られますが、繰り返されず、他のレコードの ID に NULL が返されます) を試しましたが、何も機能していないようです。次のようなものを試しました:
SELECT di1.ID,
(SELECT TOP(1) di1.ID
FROM TABLE
WHERE
di1.currentItemtId = di2.currentItemtId AND di1.formerItemId = di1.formerItemId
) AS repeat
,di2.deleteItemId
,di1.currentitemtId
,di1.formerItemId
,di1.contentId
FROM Table di1
LEFT JOIN
Table di2 ON di1.ID = di2.ID
しかし、この方法では ID は繰り返されません。通常の選択と同じ ID の値を取得します。
SQL Server 2008 を使用しています。
どんな助けでも大歓迎です。