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文を使用しています。

  1. 月の唯一の値ごとに、条件を満たすSalesの値を合計するためにSUM関数を使用し、新しい列AとBを生成します。
  2. CASE文は条件(Regionの値)に基づいて、異なる結果(Salesの値または0)を返すために使用されます。

月に応じてグループ化され、新しい列AとBが作成されます。 A列にはRegionが’A’のSales値が含まれ、B列にはRegionが’B’のSales値が含まれます。

bannerAds