質問: MySQL クロス集計(PIVOT)をしたいとおもっています。 テーブルは画像のような形です。 クロス集計の内容: カラム「都道府県」が「東京」のレコードに カラム「お店名」の値と同じ「都道府県」を 抽出して、Count数を一緒に出したい。 画像の内容であれば、 *「お店名」に ・マクドナルド ・モスバーガー を含むレコード数を出す 結果: 香川→2 大阪→1 東京→3 徳島→2 北海道→1
回答: すみません、回答の趣旨を理解しているかどうか自信がないのですが他に回答が付かないので。 pivotということであれば、group byで十分ではないかと思います。 select 都道府県,count(お店名) from テーブル名 where お店名 = "マクドナルド" or お店名 = "モスバーガー" group by 都道府県; 正に例に挙げているような結果が得られます。 whereの条件を書き換えればpivotのように様々な条件での集計結果が取り出せます。group byはカンマ区切りで複数指定できますのでExcelのピボットと同じように使えます。ただしレイアウトを弄るのは大変ですが。 ちなみに統計学でいうクロス集計表を出したい場合は以下のリンクを参照してもらえれば。