SQLにおけるPIVOTの理解:行を列に変換する
Grace Collins
Solutions Engineer · Leapcell

Key Takeaways
- SQLのPIVOT演算子は、分析を容易にするために行を列に回転させます。
- PIVOTの構文と使用法は、データベースシステムによって異なります。
- PIVOTは、データを効率的に要約およびレポートするのに最適です。
導入
SQLでは、データは多くの場合、正規化された行ベースの形式で格納されます。これはトランザクション処理には優れていますが、レポートや分析には必ずしも理想的ではありません。ここで、PIVOT
演算子が非常に役立ちます。SQLのPIVOT
関数を使用すると、ユーザーは行を列に回転させることができ、データを読みやすく、分析しやすくすることができます。特に、レポートやビジネスインテリジェンスのタスクに適しています。この記事では、PIVOT
とは何か、その使用方法、および実践的な例について説明します。
SQLにおけるPIVOTとは?
SQLのPIVOT
演算子は、行から列にデータを変換または回転させるために使用されます。このプロセスは、クロス集計とも呼ばれます。これは、データを要約し、それをより理解しやすいマトリックスのような形式で表示したい場合に特に役立ちます。
PIVOTを使用する主な利点:
- データ分析とレポート作成を簡素化
- データ視覚化を容易にする
- 複数のカテゴリにわたるデータの比較に役立つ
PIVOTの基本的な構文
SQL ServerでPIVOT
演算子を使用するための基本的な構文を以下に示します(OracleやPostgreSQLなどの他のデータベースは異なるアプローチを使用することに注意してください)。
SELECT <非ピボット列>, [最初のピボット列] AS <列名>, [2番目のピボット列] AS <列名>, ... FROM ( SELECT <集計する列>, <ピボットする列>, <非ピボット列> FROM <テーブル名> ) AS SourceTable PIVOT ( <集計関数>(<集計する列>) FOR <ピボットする列> IN ([最初のピボット列], [2番目のピボット列], ...) ) AS PivotTable;
実践的な例
Sales
という名前のテーブルがあるとします。
Year | Quarter | Revenue |
---|---|---|
2023 | Q1 | 1000 |
2023 | Q2 | 1500 |
2023 | Q3 | 2000 |
2023 | Q4 | 1800 |
2024 | Q1 | 1200 |
2024 | Q2 | 1600 |
各四半期が列になり、各年が行になるようにデータを変換する場合は、PIVOT
演算子を使用できます。
SELECT Year, [Q1], [Q2], [Q3], [Q4] FROM ( SELECT Year, Quarter, Revenue FROM Sales ) AS SourceTable PIVOT ( SUM(Revenue) FOR Quarter IN ([Q1], [Q2], [Q3], [Q4]) ) AS PivotTable;
結果:
Year | Q1 | Q2 | Q3 | Q4 |
---|---|---|---|---|
2023 | 1000 | 1500 | 2000 | 1800 |
2024 | 1200 | 1600 | NULL | NULL |
他のデータベースでのPIVOT
すべてのSQLデータベースに組み込みのPIVOT
演算子があるわけではありません。例えば:
- Oracleは、ネイティブの
PIVOT
句をサポートしています。 - PostgreSQLには
PIVOT
キーワードはありませんが、tablefunc
拡張機能のcrosstab()
を使用するか、CASE
ステートメントを使用することで同様の結果を得ることができます。 - MySQLは
PIVOT
をネイティブにサポートしていませんが、CASE
とSUM
(または他の集計)を使用して手動でデータをピボットできます。
CASEを使用した例(MySQL/PostgreSQL):
SELECT Year, SUM(CASE WHEN Quarter = 'Q1' THEN Revenue END) AS Q1, SUM(CASE WHEN Quarter = 'Q2' THEN Revenue END) AS Q2, SUM(CASE WHEN Quarter = 'Q3' THEN Revenue END) AS Q3, SUM(CASE WHEN Quarter = 'Q4' THEN Revenue END) AS Q4 FROM Sales GROUP BY Year;
PIVOTを使用するタイミング
次のような場合は、PIVOT
関数を使用します。
- 複数のカテゴリにわたって値を比較する必要がある場合
- レポートまたはダッシュボードのデータを準備する必要がある場合
- データをグループ化および回転させることでデータ分析を簡素化する場合
結論
PIVOT
演算子はSQLの強力なツールであり、行を列に変換して、より明確で簡潔なデータ分析を可能にします。構文はSQLの方言によって異なる場合がありますが、基本的な考え方は同じです。PIVOT
をいつ、どのように使用するかを理解することで、データレポートと分析の能力を大幅に向上させることができます。
FAQs
PIVOTは、行ベースのデータを列ベースの形式に変換して、読みやすくします。
すべてのSQLデータベースがPIVOTキーワードをサポートしているわけではありませんが、CASEステートメントを使用すると同様の結果を得ることができます。
複数のカテゴリにわたってデータを比較または要約する必要がある場合は、PIVOTを使用します。
Leapcellは、バックエンドプロジェクトをホストするための最高の選択肢です。
Leapcellは、ウェブホスティング、非同期タスク、およびRedis向けの次世代サーバーレスプラットフォームです。
多言語サポート
- Node.js、Python、Go、またはRustで開発できます。
無制限のプロジェクトを無料でデプロイ
- 使用量に応じてのみ料金が発生します—リクエストも請求もありません。
比類のない費用対効果
- アイドル時の料金なしで、従量課金制。
- 例:25ドルで、平均応答時間60ミリ秒で694万リクエストをサポートします。
合理化された開発者エクスペリエンス
- 簡単なセットアップのための直感的なUI。
- 完全に自動化されたCI/CDパイプラインとGitOps統合。
- 実用的な洞察を得るためのリアルタイムメトリックとロギング。
容易なスケーラビリティと高性能
- 高い同時実行性を容易に処理するための自動スケーリング。
- 運用上のオーバーヘッドはゼロ—構築に集中するだけです。
ドキュメントで詳細をご覧ください。
Xでフォローしてください:@LeapcellHQ