SQL分析データ準備と基礎統計#04:横持ち
質的変数を変数化する場合の定石が横持です。SQLだと以下のような形で、件数を取る場合にはmaxをsumに置き換えます(■部分は後述します)。
max(case when col1='a■' then 1 else 0 end) as col_a,
max(case when col1='b■' then 1 else 0 end) as col_b,
厄介なのは上記のcol1の値バリエーションが多いと書くのが大変という点です。あまりスマートなやり方ではないですが、Excelのconcatenate関数とオートフィルを使って大量生産します。まず、以下のような形でcol1バリエーションを取得します。
この結果をExcelに貼り付け、以下のような列の並びを作ります。■はExcelだと'を消してしまうのでそれを回避するために頭につけておき、あとで置換して消します。貼り付けた列以外は縦にオートフィルします(1行だけ指定すると数値部分が増加していくため、2,3行コピーしてからオートフィル)。
max(case when col1='
貼り付け列
■' then 1 else 0 end) as col_
貼り付け列
,
すべて埋め終わったら上記の5列をconcatenateし、文字列としてコピーしなおし、■を無文字で置換して一括削除します。できた文字列を加えたSQLが以下です。
///