2016-12-08 14 views
0
id Event No BrandId 
    1 10   B2    
    2 10   B8    
    3 11   B1   
    4 13   B9   
    5 13   B3  

私は上記のテーブルをSQL Viewクエリの結果として使用します。PostgreSQL SQLビュー:複合構造

イベント10のB2とB8のインスタンスのブランドIDが一致するため、2つのレコードが作成されます。

ブランドの数が一致するレコードを作成するにはどうすればいいですか。

SELECT "Event No", array_agg("BrandId") AS brand_array 
FROM tbl 
GROUP BY "Event No" 
ORDER BY "Event No"; -- optional 

またはstring_agg("BrandId", ', ') AS brand_list

+0

カンマ区切りの値を列に格納していますか? – e4c5

+0

はい....しかし、私の質問で言及された1番目のテーブルのように結果を残しておきたい。それぞれのブランドIDがイベントと一致する別のレコードを意味する –

+0

コンマ区切り値を格納するのは**本当に**、本当に悪い考え。 –

答えて

0

あなたが簡単な集計をしたいように思えます。
Read about aggregate functions in the manual.

+0

私の質問では、テーブルは「イベント」で、ブランドIDはサブクエリで計算されます。したがって、単一のイベントの場合、複数のブランドIDを照合することができます。したがって、テーブルイベントでSQLクエリを起動し、レコード数を一致させたブランドIDの数にする必要があります。あなたが提供したソリューションは、私が必要としているものではないと思います。 –

+0

http://stackoverflow.com/questions/41095453/postgresql-query-to-split-the-array-into-rows –