• ベストアンサー

INSERT時に発番を行いたい

ATBLからBTBLへのINSERT時発番を行いたい <環境> SQLSERVER 2008 <ATBL> CD varchar(3) KEY NO int KEY NAME varchar(10) <BTBL> CD varchar(3) KEY NO int KEY NAME varchar(10) <BTBLのデータ> CD   NO   NAME 001 1 太郎 001 3 次郎 001 5 三郎 BTBLをATBLへINSERTしたいのですが、この時、NOを1から再付番したいのです。 INSERTクエリで一発で更新できますでしょうか? ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

row_numberで1からの連番ふれるよ INSERT INTO ATBL(CD, NO, NAME) SELECT CD, row_number() OVER(ORDER BY CD) AS NO, NAME FROM BTBL

参考URL:
http://msdn.microsoft.com/ja-jp/library/ms186734.aspx
noname#208236
質問者

お礼

見事にできました。ありがとうございました。

その他の回答 (1)

回答No.1

NOのデータ型のカラムにIDENTITY属性を付ければ自動採番されます。 (詳細は参考URLを参照) ただし、今後に使用で自由に採番できなくなって困るのであれば、 一旦ワーク用のテーブルを作成し <WK_TBL> CD varchar(3) not null, NO int IDENTITY (1, 1) NOT NULL , NAME varchar(10) これに一度INSERTした後、BTBLにコピーしてやるといいでしょう。 INSERT INTO WK_TBL(CD, NAME ) SELECT CD,NAME FROM ATBL; INSERT INTO BTBL(CD, NO,NAME ) SELECT CD,NO,NAME FROM WK_TBL; こんな感じで行けるはず

参考URL:
http://msdn.microsoft.com/ja-jp/library/ms186775.aspx
noname#208236
質問者

お礼

説明不足で申し訳ありません。 一時ワークが使用できないので困ってました。 お返事ありがとうございました。

関連するQ&A