连接表PostgreSQL中的行

时间:2014-10-03 04:35:34

标签: sql postgresql

我有表cname

CREATE TABLE cname
(
  cid integer,
  cname text,
  rel text
)

这些是其中的一些数据。

INSERT INTO cname  VALUES (1, 'name1', 'a1');
INSERT INTO cname  VALUES (2, 'surname1', 'a1');
INSERT INTO cname  VALUES (3, 'name2', 'b2');
INSERT INTO cname  VALUES (4, 'surname2', 'b2');

它看起来像这样,

enter image description here

  • 例如,rel 1 2 cid列数据相同 那么如何在cid
  • 中的(1,2)中连接这两个名称

期待reslut

cname
-----
surname1_name1

注意:在连接字段cname时,姓氏应首先出现,即在rel a1 cid(2)的最大值应该首先考虑。

1 个答案:

答案 0 :(得分:0)

根据您的标准,您可以通过两种方式实现这一目标。

选项1 - 使用CTE

with cte as (
select cname,rel from cname order by cid desc
)
select string_agg(cname,'.') full_name from cte group by rel  

选项2 - 在 FROM Clause

上使用子选择
select string_agg(cname,'.') full_name
from (select cname,rel from cname order by cid desc) t  
group by rel  

你可以refer string_agg() and more..