小编lar*_*a80的帖子

PostgreSQL 9.1:如何连接数组中没有重复的行,加入另一个表

我正在使用PostgreSQL 9.1并需要帮助将多行连接在一起.我需要在2个表中这样做.当我使用两次array_agg()函数时,我得到结果中的重复值.

表:

CREATE TABLE rnp (id int, grp_id int, cabinets varchar(15) );

INSERT INTO rnp VALUES
 (1,'11','cabs1')
,(2,'11','cabs2')
,(3,'11','cabs3')
,(4,'11','cabs4')
,(5,'22','c1')
,(6,'22','c2');

CREATE TABLE ips (id int, grp_id int, address varchar(15));

INSERT INTO ips VALUES
 (1,'11','NY')
,(2,'11','CA')
,(3,'22','DC')
,(4,'22','LA');
Run Code Online (Sandbox Code Playgroud)

SQL:

SELECT DISTINCT

  rnp.grp_id,
  array_to_string(array_agg(rnp.cabinets)OVER (PARTITION BY rnp.grp_id), ',') AS cabinets,
  array_to_string(array_agg(ips.address) OVER (PARTITION BY ips.grp_id), ',') AS addresses


FROM rnp JOIN ips ON rnp.grp_id=ips.grp_id
Run Code Online (Sandbox Code Playgroud)

结果:

GRP_ID  CABINETS                                             ADDRESSES
11  cabs1,cabs1,cabs2,cabs2,cabs3,cabs3,cabs4,cabs4     NY,CA,NY,CA,NY,CA,NY,CA
22  c1,c1,c2,c2                                             DC,LA,DC,LA
Run Code Online (Sandbox Code Playgroud)

而我需要的是:

 GRP_ID     CABINETS …
Run Code Online (Sandbox Code Playgroud)

sql postgresql postgresql-9.1

31
推荐指数
1
解决办法
2万
查看次数

标签 统计

postgresql ×1

postgresql-9.1 ×1

sql ×1