簡體   English   中英

連接表PostgreSQL中的行

[英]concatenate rows in a table 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');

看起來像這樣

在此處輸入圖片說明

  • 例如,兩個cid 12的 rel列數據都相同,因此如何在(1,2)cid所在的位置將兩個名稱連接在一起

期待再溶

cname
-----
surname1_name1

注意:在串聯提交的cname姓氏應排在首位,即在rel a1 組中 ,最大cid(2)應該首先考慮。

根據您的標准,您可以通過兩種方式執行此操作。

選項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子句上使用子選擇

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

可以引用string_agg()等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM