MySQLのPIVOT関数の使い方は何ですか?
MySQLには、組み込みのPIVOT関数はありませんが、条件集約とCASE文を使用して同様の機能を実現することができます。
MySQLでは、行を列に変換するために条件集約やCASE文を使用することができます。以下に、PIVOT機能を実現するために条件集約やCASE文を使用する方法の例を示します。
salesという名前の表を持っているとします。以下のデータが含まれています。
+-------+-------+-------+-------+
| Month | Sales | Region| Product|
+-------+-------+-------+-------+
| 1 | 100 | A | X |
| 1 | 200 | B | X |
| 2 | 150 | A | Y |
| 2 | 250 | B | Y |
+-------+-------+-------+-------+
私たちは、Region列の値を列として、Sales列の値を対応する値として取得したいと考えています。
+-------+-------+-------+
| Month | A | B |
+-------+-------+-------+
| 1 | 100 | 200 |
| 2 | 150 | 250 |
+-------+-------+-------+
この機能を実現するには、次のクエリを使用します:
SELECT
Month,
SUM(CASE WHEN Region = 'A' THEN Sales ELSE 0 END) AS A,
SUM(CASE WHEN Region = 'B' THEN Sales ELSE 0 END) AS B
FROM sales
GROUP BY Month;
このクエリは条件集計とCASE文を使用しています。
- 月の唯一の値ごとに、条件を満たすSalesの値を合計するためにSUM関数を使用し、新しい列AとBを生成します。
- CASE文は条件(Regionの値)に基づいて、異なる結果(Salesの値または0)を返すために使用されます。
月に応じてグループ化され、新しい列AとBが作成されます。 A列にはRegionが’A’のSales値が含まれ、B列にはRegionが’B’のSales値が含まれます。