SQLにおけるサブクエリでのカラムと行の変換手法

この記事では、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;
変換前idcolumnvalue
11A100
21B200
テーブル名称1:CASE文を用いた変換前のデータ
変換後idAB
11100200
テーブル名称2:CASE文を用いた変換後のデータ

カラムを行に変換する(列行変換)

カラムを行に変換する場合は、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;
変換前idAB
11100200
テーブル名称3:UNION ALLを用いた変換前のデータ
変換後idcolumnvalue
11A100
21B200
テーブル名称4:UNION ALLを用いた変換後のデータ

まとめ

サブクエリを用いることで、行とカラムの変換がSQL内でスムーズに行えます。特に、CASE文やPIVOT、UNPIVOT、UNION ALLなどのSQL機能を使うことで、データの行列変換が非常に効率的に行えます。データベースの運用で複雑なデータ構造に遭遇した際には、ぜひこの手法を用いてみてください。

コメント

コメントする

目次