MySQLのPIVOT関数の役割は何ですか?
MySQLには組み込みのPIVOT関数はありませんが、CASE文と集約関数を使用して同様の機能を実現することができます。
PIVOT関数の主な機能は、複数行のデータを特定の列値を識別子とする複数列のデータに変換することです。これにより、データを転置して、元々行にあったデータを列に変換することができます。
例えば、以下の表の構造のデータがあるとします:
Name | Subject | Score
------+----------+-------
John | Math | 90
John | English | 80
John | Science | 85
Amy | Math | 95
Amy | English | 75
Amy | Science | 90
上記のデータを学科別に転置したい場合は、PIVOT関数を使用して実現できます。転置後の結果は以下の通りです:
Name | Math | English | Science
------+------+------+--------
John | 90 | 80 | 85
Amy | 95 | 75 | 90
これにより、各学生の成績は一つの行データになり、それぞれの科目の成績は列データになります。
MySQLにはPIVOT関数が組み込まれていないが、CASE文と集約関数を使用して手動で転置操作を実行することができます。具体的な実装方法は以下のサンプルコードを参考にしてください。
SELECT Name,
MAX(CASE WHEN Subject = 'Math' THEN Score END) AS Math,
MAX(CASE WHEN Subject = 'English' THEN Score END) AS English,
MAX(CASE WHEN Subject = 'Science' THEN Score END) AS Science
FROM TableName
GROUP BY Name;
上記のコードでは、CASE文を使用して、異なる科目の成績をそれぞれ対応する列に配置し、MAX関数を使用して各科目の最高成績を取得しています。最後に、GROUP BY文を使用して名前でグループ化し、データの転置操作を実現しています。
留意しておくべき点は、データベースによってPIVOT関数の実装方法が異なる可能性があることです。上記のコードは一般的な実装方法の一例に過ぎません。