2017-10-17 4 views
0

重複エントリをマップし、別のテーブルからデータを取得する方法はありますか。私はテーブル2の元のファイル名をマップする必要がありますが、データはテーブル1から来て、マッピングの参照として新しいファイル名を使用していますか?私はパーティションでROW_NUMBERをしようとしましたが、私はどこにでもSQLマップ別のテーブルからの重複エントリ

表1つもりはない:

new filename  original filename 
text_001.pdf  test1333.pdf 
text_001.pdf  test4443.pdf 
hello2332.pdf  world1234.txt 
hello2332.pdf  world3331.txt 

は表2:

EE  new filename  
00001 text_001.pdf  
00001 text_001.pdf 
00002 hello2332.pdf 
00002 hello2332.pdf 

出力リレーテーブル:

EE  new filename  original filename(entries coming from table 1) 
    00001 text_001.pdf  test1333.pdf 
    00001 text_001.pdf  test4443.pdf 
    00002 hello2332.pdf  world1234.txt 
    000002 hello2332.pdf  world3331.txt 
+0

を私はJOINをお勧めします!おそらくLEFT JOINです。ファイル名が変更されていないtable2の行を追加したい場合は、 – jarlh

+0

'select * from table2 t2 t1new_filename = t2.new_filename'でtable1 t1を結合しますか? –

+1

最初のテーブルの新しいファイル名に重複を分離する列がないので、これを行う一般的な方法はありません。データを修正する必要があります。 –

答えて

1
;WITH xx AS 
(SELECT DISTINCT 
[EE], 
[new filename] 
FROM [Table 2] 
) 
SELECT 
xx.[EE], 
xx.[new filename], 
a.[original filename] 
FROM xx 
LEFT JOIN [table 1] as a 
ON a.[new filename] = xx.[new filename] 
+0

最初のサブクエリ( 'select distinct'を使用)は、table2から重複を削除した後、元のファイルへの左結合によって新しいファイルが古いファイルに関連付けられます。上記のCTEを使用することは完全にオプションです。 –

+0

@Used_By_あなたのアイデアはすでに働いています:)ありがとうございます。私はCTEを使う必要はありませんでした。私の質問から欠けていたものは別です:) – yope

+0

私は結果とテーブル2を更新する必要がありますか?私は別名が動作するとは思わない? – yope

関連する問題