- 締切済み
自己結合による新しいカラムの作成
いつもお世話になっております。テーブル内の2つのカラムから、一意となるようにカラムに値を入れたいのですが、どのようにすれば良いのでしょうか?やりたいことは、以下のようなことです。 どうぞよろしくお願い致します。 現状のテーブル code_up code_low code あ a い b う c あ a い c 作りたいテーブル code_up code_low code あ a 1 い b 2 う c 3 あ a 1 い c 4
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- nora1962
- ベストアンサー率60% (431/717)
codeの値を一意に設定することは可能ですが、そのためにはどういう順番で連番をふるかの情報が必要です。 「作りたいテーブル」の例だと、無理やりやろうとするならストアドプロシージャでループし、(code_up code_low)が同一でcodeが振られていない場合はカウントアップしながら更新していくイメージでないと実現できないと思います。実行速度が心配です。 ( code_up, code_low ) 順に連番を振るのなら update テーブル set code = s.rn from ( select row_number() over( order by t.code_up, t.code_low ) as rn, t.* from ( select distinct * from テーブル ) t ) s where テーブル.code_up=s.code_up and テーブル.code_low=s.code_low; で実現できるはずです。