2014年7月23日水曜日

SQLプロシジャ入門7:レコードを追加する【INSERT】


SQLプロシジャによるレコードの追加方法を紹介します。



サンプルデータ

data DT1;
   A=1; B="AA"; output;
   A=2; B="BB"; output;
run;

data DT2;
   A=5; C="AAA"; output;
   A=6; C="BBB"; output;
run;

データセットDT1
 A  
B
  1
  AA    
  2
  BB 

データセットDT2
 A 
 C
  5
  AAA   
  6
  BBB 



構文1

proc sql;
   insert into DT1 (A,B)
   values (3,"CC");
quit;


データセットDT1
 A  
B
  1
  AA    
  2
  BB 
  3
  CC 


基本構文
  INSERT INTO 対象のデータセット  ( 対象の変数 , … )
  VALUES ( 格納したい値 , … )




構文2

proc sql;
   insert into DT1
   values (4,"DD");
quit;


解説
構文1から( 対象の変数 … )部分省略するとデータセットに格納されてる変数順にVALUESで指定した値を格納していきます。




構文3

proc sql;
   insert into DT1 (A,B)
   select A,C from DT2;
quit;


解説
・SELECT,FROMなどで抽出したレコードを、INSERT INTOで指定したデータセットに追加します。

・INSERTとSELECTで変数名が異なっていても順番で対応づけられます(上記の例ではDT1の変数BにDT2の変数Cの値を格納しています。)

・ちなみに構文2と同様、青字部分を省略して書くことも出来ます。

・今回の例ではログにWARNINGが表示されます。理由は記事の下の方に記載した「注意点」を参照ください。



構文4

proc sql;
   insert into DT1
   set A=7,  B="EE";
quit;


解説
「SET 変数名=格納したい値, …」 という書き方もあります。


[注意点]
追加する値が、もとのLENGTHよりも大きい場合、もとのLENGTHにあわせて文字を切った状態で追加されます。(ログにWARNINGも表示される)




SQLプロシジャ入門記事一覧
1.変数を選択する【SELECT】
2.レコードを並べ替える【ORDER BY】
7.レコードを追加する【INSERT】
8.レコードを削除する【DELETE】

0 件のコメント:

コメントを投稿