私は2つのテーブル、クライアントと連絡先番号を持っています。各クライアントには1つまたは複数の連絡先番号があり、1対多の関係にあります。そして、行ごとに1つのクライアントとその連絡先番号があるExcelドキュメントを作成する必要があります。例えば:
クライアント名| contact_number_1 | contact_number_2 | ..。
POSTGRESQLで高速にしたいと思います。私がExcelファイルを作成する方法は関係ありません。残りを作成するにはクエリが必要です。
ありがとうございました!
結果を解析してそこからExcelファイルを作成できる場合、最も柔軟な解決策は、数値を配列に集約することです。
select c.client_id,
c.client_name,
array_agg(cn.number) as contact_numbers
from client c
join concat_number cn on cn.client_id = c.client_id
group by c.client_id, c.client_name;
もう1つの方法は、を使用string_agg(cn.number, ',')
してコンマ区切りのリストを取得することです(ただし、配列は名前に埋め込まれたコンマに対してより堅牢です)。
本当に別々の列の数値を取得する必要がある場合は、適切な列の上限を決定する必要があります。次に、最初のクエリを使用して、配列要素を列として抽出できます。
select client_id,
client_name,
contact_numbers[1] as contact_number_1,
contact_numbers[2] as contact_number_2,
contact_numbers[3] as contact_number_3,
...
from (
select c.client_id,
c.client_name,
array_agg(cn.number) as contact_numbers
from client c
join concat_number cn on cn.client_id = c.client_id
group by c.client_id, c.client_name
) t
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加