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 タイトルと見栄えを修正

Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください