Redshift でフィールドをグループ化および連結する方法 質問する

Redshift でフィールドをグループ化および連結する方法 質問する

RedshiftでフィールドをGROUP BYおよびCONCATENATEする方法(例:テーブルがある場合)

ID   COMPANY_ID   EMPLOYEE
1    1            Anna
2    1            Bill
3    2            Carol
4    2            Dave

どうすればこのような結果を得ることができますか

COMPANY_ID   EMPLOYEE
1            Anna, Bill
2            Carol, Dave

PostgreSQLにはいくつかの解決策があるただし、これらの回答に記載されている機能はいずれも現在 Redshift では利用できません。

ベストアンサー1

まあ、少し遅れましたが、この機能に関するお知らせ2015 年 8 月 3 日に発生しました。Redshift は LISTAGG ウィンドウ関数を導入し、現在ではそれが可能になっています。ここに、問題に対する簡単な解決策を示します。役に立つかどうかはわかりませんが、みんなに知ってもらえるようにここに掲載します。

SELECT COMPANY_ID,
       LISTAGG(EMPLOYEE,', ')
WITHIN GROUP (ORDER BY EMPLOYEE)
OVER (PARTITION BY COMPANY_ID) AS EMPLOYEE
FROM YOUR_TABLE
ORDER BY COMPANY_ID

この機能を見てうれしく思いました。Redshift が追加し続けている新機能をすべて取り入れて、当社の本番スクリプトの多くがアップグレードされる予定です。

関数に関するドキュメントはこちら

おすすめ記事