この記事では、SQL(Structured Query Language)においてサブクエリを使ってカラムと行を変換する方法について解説します。特に、データの構造を効率よく変更する際に有用な手法をいくつか紹介します。
目次
サブクエリとは
サブクエリとは、SQL文内で使用される別のSQL文のことです。主に、データの検索、追加、削除などの複雑な操作を行う際に使用されます。
サブクエリの基本形
SELECT column1, column2 FROM table WHERE column1 = (SELECT column FROM another_table WHERE condition);
カラムと行の変換方法
サブクエリを使ってカラムと行の変換を行う場合、以下のような方法があります。
行をカラムに変換する(行列変換)
行をカラムに変換する場合、主にCASE文やPIVOTを使用します。
CASE文を用いた例
SELECT
id,
MAX(CASE WHEN column = 'A' THEN value END) as 'A',
MAX(CASE WHEN column = 'B' THEN value END) as 'B'
FROM
table
GROUP BY
id;
変換前 | id | column | value |
---|---|---|---|
1 | 1 | A | 100 |
2 | 1 | B | 200 |
変換後 | id | A | B |
---|---|---|---|
1 | 1 | 100 | 200 |
カラムを行に変換する(列行変換)
カラムを行に変換する場合は、UNPIVOTやUNION ALLを使用します。
UNION ALLを用いた例
SELECT id, 'A' as column, A as value FROM table
UNION ALL
SELECT id, 'B' as column, B as value FROM table;
変換前 | id | A | B |
---|---|---|---|
1 | 1 | 100 | 200 |
変換後 | id | column | value |
---|---|---|---|
1 | 1 | A | 100 |
2 | 1 | B | 200 |
まとめ
サブクエリを用いることで、行とカラムの変換がSQL内でスムーズに行えます。特に、CASE文やPIVOT、UNPIVOT、UNION ALLなどのSQL機能を使うことで、データの行列変換が非常に効率的に行えます。データベースの運用で複雑なデータ構造に遭遇した際には、ぜひこの手法を用いてみてください。
created by Rinker
¥4,554
(2024/11/22 10:55:01時点 Amazon調べ-詳細)
コメント