[PostgreSQL] 複数行取れるSelectを1行で返す

経緯

キーが同じだけど、valueが違う値をキー毎に取得したい

例)

IDKeyvalue
1AB_12345
2AB_12345
3AB_12345
4AB_12346

この場合、

AB_12345,あいう
AB_12345,か

みたいな形で、IDをグループ化して取りたい。

とにかく、for文でくるくる回したくない。。。

解決策

string_aggを使い、「,」区切りでまとめて取得することで解決

select 
        key
 	string_agg(value, ',') as values
from 
        test_table
GROUP by techtouch_guide_uuid

ちなみに、valueの値が文字列でない場合、castすることで対応できる

string_agg(cast(value as VARCHAR), ',') as values

コメントを残す

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