AテーブルからBテーブルへの展開
表題のとおりAテーブルのデータを展開し、
BテーブルへINSERTするというPLSQLを考えています。
以下ような感じです。
Aテーブル
No 列A1 列B1 列C1 列D1 列A2 列B2 列C2 列D2 列A3 列B3 列C3 列D3
--------------------------------------------------------------
上記表のデータを
Bテーブル
No 列BA 列BB 列BC 列BD
-------------------------
No 列A1 列B1 列C1 列D1 ←列名の末尾が1のもの
No 列A2 列B2 列C2 列D2 ←列名の末尾が2のもの
No 列A3 列B3 列C3 列D3 ←列名の末尾が3のもの
と、いう感じでBテーブルへ。
Aテーブルの列名は”列A1”のように末尾に数字がついておりBテーブルへは
末尾が同じものを1レコードとしてINSERTします。
これを実現する方法として
CURSOR csr IS
SELECT * FROM
( SELECT 列A1 ,列B1 ,列C1 ,列D1 FROM Aテーブル
UNION
SELECT 列A2 ,列B2 ,列C2 ,列D2 FROM Aテーブル
UNION
SELECT 列A3 ,列B3 ,列C3 ,列D3 FROM Aテーブル
);
上記のようにカーソルで処理してINSERTする以外に方法がありますでしょうか
因みにこの例では1~3項目ですが実際には1~15項目まであります。
BテーブルへINSERTする列数も13列存在します。
DBはORACLE9iです
お礼
有難う御座いました。 非常に勉強になりました。 又、解らない事があった時は宜しくお願いします。