はその後idと3つのデータ列を、ターゲット表を作成
-- This is your source query table (can be anything)
CREATE TABLE source_table
(
source_a VARCHAR(255),
source_b VARCHAR(255),
source_c VARCHAR(255)
);
insert into source_table (source_a, source_b, source_c) values ('A', 'B', 'C');
insert into source_table (source_a, source_b, source_c) values ('D', 'E', 'F');
insert into source_table (source_a, source_b, source_c) values ('G', 'H', 'I');
(データのソースをシミュレートする)のは、サンプルデータを持つテーブルを作成してみましょう。
-- This is your target_table
CREATE TABLE target_table
(
id NUMBER(9,0),
target_a VARCHAR2(255),
target_b VARCHAR2(255),
target_c VARCHAR2(255)
);
-- This is sequence used to ensure unique number in 1st column
CREATE sequence target_table_id_seq start with 0 minvalue 0 increment BY 1;
最後に、挿入、配列からロードID、ソース・テーブルからのデータの残りの部分を実行します。
INSERT INTO target_table
SELECT target_table_id_seq.nextval,
source_a,
source_b,
source_c
FROM source_table;
結果は、後でいくつかの値を追加した場合、彼らは4,5,6などの番号を継続します
1 A B C
2 D E F
3 G H I
ように見えるかもしれません...それともあなただけのグループ内での順序を取得したいです?したがって、あなたが2行以上JKLとMNOを追加した場合、テーブルを標的とするために、この
1 A B C
2 D E F
3 G H I
1 J K L
2 M N O
ようになり、あなたが別のソリューションが必要(でもシーケンサーを必要としない)
SELECT
RANK() OVER (ORDER BY source_a, source_b, source_c),
source_a,
source_b,
source_c
FROM source_table;
技術的にはあなたはROWNUMを使用することができます私は一貫した結果のために、分析機能を超えてRANK()を選択します。これは、同じ行を2回挿入しようとすると複雑な主キーに違反することに注意してください(私の最初の解決策はありません)
あなたはどのように地球上に1人の担当者しかいないのですか? :) ありがとうございました – amyassin