プロが教える店舗&オフィスのセキュリティ対策術

ATBLからBTBLへのINSERT時発番を行いたい

<環境>
SQLSERVER 2008

<ATBL>
CDvarchar(3)KEY
NOintKEY
NAMEvarchar(10)

<BTBL>
CDvarchar(3)KEY
NOintKEY
NAMEvarchar(10)

<BTBLのデータ>
CD   NO  NAME
0011太郎
0013次郎
0015三郎

BTBLをATBLへINSERTしたいのですが、この時、NOを1から再付番したいのです。
INSERTクエリで一発で更新できますでしょうか?
ご教授お願いします。

A 回答 (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 …
    • good
    • 6
この回答へのお礼

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

お礼日時:2011/05/27 10:27

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 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/05/17 10:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A