proc sqlは同じ処理をデータステップでも実現可能なので、実務上ではそこまで必須というわけではありませんが、今後pythonやSQLといった他言語の習得を考えている人や、もっと効率的に可読性の高いコードを書きたい人は覚えておいて損はないかと思いますので、自分用メモを公開したいと思います。
  Contents
定義
SQLではデータセットのことをテーブル、変数をカラム、オブザベーションを行と呼びます。
 むしろSASでの呼び方の方が独特。
基本構文
proc sql < options >; 
select < column names > 
from < tables for query > 
where < expression > 
group by < columns > 
having < expression > 
order by < columns >; 
quit;- select句: カラムを選択する
 - from句: クエリ先のテーブルを指定する
 - where句: select句の結果から、条件文に合致するデータを抽出する
 - group by句: 指定したカラムに基づいてデータを分類しグループ化する
 - having句: group by句によりグループ化した結果から、条件式に基づいてデータを抽出する
 - order by句: クエリ結果を指定したカラムに基づいてソートする
 
句の並び順を上記の順番にしなければなりません。
基本操作
新規テーブルを作成する
create table ds1 as 
select origin, make, mpg_city 
from sashelp.cars;create table テーブル名 as ….でクエリ結果を新規テーブルとして出力します。
すべてのカラムを選択する
select * 
from sashelp.cars;*(アスタリスク)はすべてのカラムを意味します。
指定したカラムを選択する
select make, type, origin 
from sashelp.cars; 複数のカラムを選択する場合はカンマで区切ります。
出力する行数を指定する
proc sql outobs=10; 
select * from 
sashelp.cars; 
quit;outobsオプションで出力したい行数を指定します。
変数名の変更
select make as var1, 
       type as var2, 
       origin as var3 
from sashelp.cars;変更前の変数名 as 変更後の変数名 とすることで、変数名を変更できます。データステップのrenameステートメントと同等の機能です。
新規変数の作成
select mpg_city, 
      (mpg_city/1000) as var1 
from sashelp.cars; 既存の変数mpg_cityから算出した値を新規変数var1に格納しています。
直前で新規作成した変数を参照する
select mpg_city, 
      (mpg_city/1000) as var1, 
      calculated var1*3 as var2 
from sashelp.cars; calculatedキーワードを使用するとsql文内で直前に新規作成した変数を参照できます。
 上記の例ではvar1を新規作成したあと、var2を新規作成してvar1の3倍の数値を格納しています。
変数にラベルとフォーマットを適用する
select mpg_city label="変数1" format=8.3 
from sashelp.cars;変数名の後にformat=フォーマット名およびlabel=”ラベル名”を記述することで、変数にラベルとフォーマットを適用できます。




