【发布时间】:2019-06-05 04:49:59
【问题描述】:
我有 2 个表考虑名为 fp 和批处理的表,我必须根据第一个表的 fp[主键] 和第二个表的 fp_inst_id 连接 2 个表,这样我的输出是:
第一个表的所有列和第二个表的一列是 fp.id 和 batch.fp_inst_id 上表 1 和表 2 连接的所有行的连接字符串。 笔记 : [将有多个 fp_inst_id(of table 2) 用于唯一 ID(of table 1)]
让我举个例子:
创建的表:
CREATE TABLE fp (
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
CREATE TABLE batch (
batchID int,
fp_inst_id int,
xyz varchar(255),
abc varchar(255)
);
insert into fp values(1,'savan','nahar','abc','xyz');
insert into fp values(2,'mmm','asmd','aawd','12k3mn');
insert into batch values(1,1,'garbage1', 'abc1');
insert into batch values(2,1,'garbage2', 'abc2');
insert into batch values(3,1,'garbage3', 'abc3');
insert into batch values(4,2,'garbage9', 'abc9');
如果我像这样正常加入:
select * from fp join batch on fp.PersonID = batch.fp_inst_id;
我想要的是:
批处理列可以不同,如果它有一些其他不被 [] 包围并在 ';' 上分隔的分隔符,那就没问题了什么的。
我尝试过的:
使用 MYSQL 使用 STUFF,FOR XML PATH 也可以完成同样的事情
但在 POSTGRES SQL 中似乎很困难,因为它不支持这些东西, 在 POSTGRES SQL 中,我尝试了 string_agg,但它说我要按所有内容分组
我尝试的第二件事是: 使用 with 子句首先在 fp_inst_id 上创建表 2 group by 的连接字符串,但在 POSTGRES SQL 中,它允许在主键上进行 group by(这是正常的选择)或者它要求使用聚合函数
我正在尝试通过查询在 POSTGRES SQL 中执行此操作。
提前感谢您的帮助
【问题讨论】:
标签: postgresql