行を列に変換する SQL の方法

SQLでは、行のピボットには次の方法があります。

  1. CASE ステートメントを使用する:
  1. CASE文でピボットする列ごとに対応するCASE文を記述し、ピボットする行の選択条件を変えることにより、複数の列のピボットを行う。その際、SUMやMAX、MINなどの集計関数を使用してピボット列を集計する。
  2. 示例:
SELECT
MAX(CASE WHEN condition_1 THEN value_1 END) AS column_1,
MAX(CASE WHEN condition_2 THEN value_2 END) AS column_2,
...
FROM table_name
  1. PIVOTステートメントを使用してください。
  1. PIVOTステートメントは、行変換を実行するための特別な構文です。転置する列と集計する列を指定する必要があり、どの集計関数を使用するかを選択できます。
  2. 示例:
SELECT *
FROM (
SELECT column_1, column_2, ...
FROM table_name
) AS source_table
PIVOT (
aggregate_function(column_to_aggregate)
FOR column_to_pivot
IN (list_of_pivot_values)
) AS pivot_table
  1. UNION ALL構文を使って下さい:
  1. 転置する各列からレコードを抽出し、UNION ALLで連結する。
  2. 例えば
SELECT 'column_1' AS column_name, column_1 AS column_value
FROM table_name
UNION ALL
SELECT 'column_2' AS column_name, column_2 AS column_value
FROM table_name
...

一般的には、CASE 式を使用した方法とPIVOT 式を使用した方法が最も一般的使用方法ですが、具体的なデータやニーズに応じて、異なる方法で異なる結果やパフォーマンスになる場合があります。

bannerAds