列を行に変換する前提テーブル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 |
|