列を行に変換する前提テーブルt1: id | col1 | col2 | col3 ----+------+------+------ 1 | 10 | 20 | 30 UNION ALLを使ってSELECT col1 FROM t1 UNION ALL SELECT col2 FROM t1 UNION ALL SELECT col3 FROM t1 col1
------
10
20
30
ピボットテーブルを使って前提テーブルpivot: num
-----
1
2
3
4
5
SQLSELECT CASE WHEN num = 1 THEN col1 WHEN num = 2 THEN col2 WHEN num = 3 THEN col3 END FROM t1 CROSS JOIN pivot case
------
10
20
30
SETOF関数 generate_series()を使ってSELECT CASE WHEN num = 1 THEN col1 WHEN num = 2 THEN col2 WHEN num = 3 THEN col3 END FROM t1 CROSS JOIN generate_series( 1, 3 ) AS s(num) case
------
10
20
30
参考http://www.postgresql.jp/document/9.1/html/functions-srf.html |
|