多行转一行
CREATE TABLE TestTitle (
name VARCHAR(10),
title VARCHAR(20)
);
INSERT INTO TestTitle VALUES ('张三', '程序员');
INSERT INTO TestTitle VALUES ('张三', '系统管理员');
INSERT INTO TestTitle VALUES ('张三', '网络管理员');
INSERT INTO TestTitle VALUES ('李四', '项目经理');
INSERT INTO TestTitle VALUES ('李四', '系统分析员');
SELECT
name,
array_to_string(ARRAY(SELECT unnest(array_agg(title))),',') AS allTitle
FROM
TestTitle
GROUP BY
name;
name | alltitle
------+------------------------------
李四 | 项目经理,系统分析员
张三 | 程序员,系统管理员,网络管理员
(2 行记录)
或者
SELECT
name,
string_agg(title,',') AS allTitle
FROM
TestTitle
GROUP BY
name;
name | alltitle
------+------------------------------
李四 | 项目经理,系统分析员
张三 | 程序员,系统管理员,网络管理员
(2 行记录)
PostgreSQL的连接符与oracle一样,都是||
比如'Post' || 'greSQL' 即为 'PostgreSQL'