IT用語集 › データベース › PIVOT(SQL)

PIVOT(SQL)

データベース Svenska → 更新: 2026-10-22

行を列へ変換する操作。たとえば (月, 金額) が縦に並んだ表を、月ごとに列を持つ横長の表にする。SQL Server と Oracle には PIVOT 構文があり、PostgreSQL では CASE WHEN 集計か crosstab() を使う。

用途は、1行が (年, 月) の組ではなく「縦に年、横に月」の形式で出したいレポートである。移植性のある手動の書き方は、年ごとにグループ化して SUM(CASE WHEN month = 1 THEN amount END) AS jan, SUM(CASE WHEN month = 2 ...) AS feb, ... とするもの。制約は、列が事前に決まっている必要があること(SQL は静的型付けだから)で、「動的ピボット」にはコード側で SQL 文字列を組み立てる必要がある。PostgreSQL には tablefunc 拡張の crosstab() がある。ピボットは、動的に扱える表示層(BI ツールや Python/pandas)で行われることも多い。逆の操作は UNPIVOT(列から行へ)である。

← 用語集に戻る