ピボット テーブル クエリに取り組んでいます。スキーマは次のとおりです。
スノー、名前、地区
同じ名前が多くの地区に表示される場合があります。例として、サンプル データを取り上げます。
1 Mike CA
2 Mike CA
3 Proctor JB
4 Luke MN
5 Luke MN
6 Mike CA
7 Mike LP
8 Proctor MN
9 Proctor JB
10 Proctor MN
11 Luke MN
ご覧のとおり、4 つの異なる地区 (CA、JB、MN、LP) があります。ここで、地区に対して名前をマッピングすることにより、生成されたピボット テーブルを取得したいと考えました。
Name CA JB MN LP
Mike 3 0 0 1
Proctor 0 2 2 0
Luke 0 0 3 0
私はこれのために次のクエリを書きました
select name,sum(if(District="CA",1,0)) as "CA",sum(if(District="JB",1,0)) as "JB",sum(if(District="MN",1,0)) as "MN",sum(if(District="LP",1,0)) as "LP" from district_details group by name
ただし、地区が増える可能性があります。その場合、クエリを手動で再度編集して、新しい地区を追加する必要があります。
個別の地区の名前を動的に取得して上記のクエリを実行できるクエリがあるかどうかを知りたいです。手順を使用してその場でスクリプトを生成できることはわかっていますが、他の方法もありますか?
クエリ「select distinct(districts) from district_details」の出力により、各行に地区名を持つ単一の列が返されるため、これを列に転置したいと思います。