Yanor.net/
Wiki
Blog
GitHub
Sandbox
開始行:
* 列を行に変換する [#f580411c]
** 前提 [#j8b44463]
テーブルt1:
id | col1 | col2 | col3
----+------+------+------
1 | 10 | 20 | 30
** UNION ALLを使って [#za1dfab0]
SELECT col1 FROM t1 UNION ALL SELECT col2 FROM t1 UNION ...
col1
------
10
20
30
** ピボットテーブルを使って [#x571d77d]
*** 前提 [#s7f0b986]
テーブルpivot:
num
-----
1
2
3
4
5
*** SQL [#nd6ffd9a]
SELECT CASE WHEN num = 1 THEN col1 WHEN num = 2 THEN col...
FROM t1 CROSS JOIN pivot
case
------
10
20
30
** SETOF関数 generate_series()を使って [#y9265d2c]
SELECT CASE WHEN num = 1 THEN col1 WHEN num = 2 THEN col...
FROM t1
CROSS JOIN generate_series( 1, 3 ) AS s(num)
case
------
10
20
30
*** 参考 [#f8aa419b]
http://www.postgresql.jp/document/9.1/html/functions-srf....
終了行:
* 列を行に変換する [#f580411c]
** 前提 [#j8b44463]
テーブルt1:
id | col1 | col2 | col3
----+------+------+------
1 | 10 | 20 | 30
** UNION ALLを使って [#za1dfab0]
SELECT col1 FROM t1 UNION ALL SELECT col2 FROM t1 UNION ...
col1
------
10
20
30
** ピボットテーブルを使って [#x571d77d]
*** 前提 [#s7f0b986]
テーブルpivot:
num
-----
1
2
3
4
5
*** SQL [#nd6ffd9a]
SELECT CASE WHEN num = 1 THEN col1 WHEN num = 2 THEN col...
FROM t1 CROSS JOIN pivot
case
------
10
20
30
** SETOF関数 generate_series()を使って [#y9265d2c]
SELECT CASE WHEN num = 1 THEN col1 WHEN num = 2 THEN col...
FROM t1
CROSS JOIN generate_series( 1, 3 ) AS s(num)
case
------
10
20
30
*** 参考 [#f8aa419b]
http://www.postgresql.jp/document/9.1/html/functions-srf....
ページ名: