[英]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
1和2的 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.