質問: sqlで1つのレコードから複数行挿入するには 下記のようなレコードがあります。 node_id_1 node_nm_1 node_id_2 node_nm_2 ------------------------------------- 00001 aaaa 00002 bbbb 00003 cccc 00004 dddd このレコードを元に下記のようなデータを別テーブルに挿入したいのですが、sqlで可能でしょうか id node_id node_nm ----------------- 1 00001 aaaa 1 00002 bbbb 2 00003 cccc 2 00004 dddd idはシーケンスで取得します。そして、同一レコードだったものには同じidを振ります。 dbはpostgresql 8.4です。
回答: こんな感じでいかがでしょう。 create temporary sequence tseq; create temporary table ttbl ( like {元テーブル名} ); alter table ttbl add column new_id integer; insert into ttbl select *,nextval('tseq') from {元テーブル名}; insert into {新テーブル名} select new_id,node_id_1,node_nm_1 from ttbl union select new_id,node_id_2,node_nm_2 from ttbl;