SQLにおけるPIVOT操作の方法


  1. 基本的なPIVOT操作の例:

    SELECT *
    FROM (
       SELECT category, product, sales
       FROM sales_table
    ) AS source_table
    PIVOT (
       SUM(sales)
       FOR product IN ([Product A], [Product B], [Product C])
    ) AS pivot_table;

    上記の例では、sales_tableというテーブルからcategoryproductsalesの列を取得し、productごとにsalesを集計して列に変換しています。

  2. 動的なPIVOT操作の例:

    DECLARE @columns NVARCHAR(MAX), @query NVARCHAR(MAX);
    
    SELECT @columns = STUFF(
       (
           SELECT DISTINCT ',[' + product + ']'
           FROM sales_table
           FOR XML PATH('')
       ), 1, 1, ''
    );
    
    SET @query = '
    SELECT *
    FROM (
       SELECT category, product, sales
       FROM sales_table
    ) AS source_table
    PIVOT (
       SUM(sales)
       FOR product IN (' + @columns + ')
    ) AS pivot_table;';
    
    EXECUTE(@query);

    上記の例では、sales_tableというテーブルからproductの値を動的に取得し、それぞれの値を列として使ってPIVOT操作を行っています。これにより、テーブルに追加される新しいproductに対しても自動的にPIVOT操作が適用されます。

  3. 複数の集計関数を使用するPIVOT操作の例:

    SELECT *
    FROM (
       SELECT category, product, sales
       FROM sales_table
    ) AS source_table
    PIVOT (
       SUM(sales) AS TotalSales, AVG(sales) AS AverageSales
       FOR product IN ([Product A], [Product B], [Product C])
    ) AS pivot_table;

    上記の例では、sales_tableというテーブルからproductごとにsalesの合計値と平均値を計算して列に変換しています。

これらは一部のPIVOT操作の例です。実際の使用に応じて、さまざまな方法でPIVOTを使用することができます。