Bのレコードが一意である場合、あなたはこの
のようなクエリを使用することができますが-------------- EDIT --------- ----------
Bは、複数のレコードを持つことができる場合は、パーティション
insert into TestA
select b.*,
(select max([rank]) from TestA where col1 = b.col1 and col2 = b.col2 and col3 = b.col3)
+ row_number()over (partition by col1, col2, col3 order by col1, col2,col3 asc) as N
from TestB b
でROW_NUMBER()funcionを使用することができます------------- - 終了編集 -------------------
注:私は、テーブルの名前を変更:種皮とTESTB
insert into TestA
select b.*, (select max([rank])+1 from TestAwhere col1 = b.col1 and col2 = b.col2 and col3 = b.col3)
from TestB b
またはこの
のように登録しよう
insert into testa
select b.*, mr+1 from TestB b
join
(select col1, col2, col3, max([rank]) as mr
from TestA A
group by col1, col2, col3) as M
on
b.col1 = M.col1 and b.col2 = M.col2 and b.col3 =M.col3
こんにちは、ありがとうございました。最初のコードは実行できません。なぜなら、実行カラムはテーブルbには存在しないからです。私は2番目を試しました。この問題は、テーブルBに第1行と同じ行が重複している場合、第2エントリにも同じランクが割り当てられていることになります。インクリメントする必要があります。 –
テーブルBの複数のエントリで動作するようにクエリを変更しました –
Genius man ... :)素晴らしい...変更されたコードが期待通りに機能しました.. –