2012-06-14
PostgreSQL覚書 配列,縦→横,カンマ区切り
以下のようなテーブルがあったとして
【t_sample】
id,element,rank,…
1,’A’,1,…
1,’B’,2,…
1,’C’,3,…
2,’D’,1,…
これを
1,’A,B,C’
2,’D’
ってな感じで取得する方法
SELECT id , ARRAY_TO_STRING(ARRAY(SELECT element FROM t_sample a WHERE a.id = b.id ORDER BY a.rank),',') elements FROM (SELECT id FROM t_sample GROUP BY id ORDER BY id) b
ARRAY_TO_STRING:取得した配列をARRAY_TO_STRINGでカンマ区切りにする。
SQL文が少々複雑で面倒だけど、使い勝手はよさげ。
[編集メモ] 2017/3/29 タイトルと見栄えを修正