Postgresql数据库
现有一张表如图:
编写 SQL 查询,显示结果类型根据名分成一行,并用 , 隔开
结果图如下:
源码
CREATE TABLE TABLE6 (
"ID" INT,
"NAME" VARCHAR(36),
"TYPE" VARCHAR(36)
);
INSERT INTO TABLE6 VALUES ('1', '小明', '步行');
INSERT INTO TABLE6 VALUES ('2', '小明', '步行');
INSERT INTO TABLE6 VALUES ('3', '小明', '自行车');
INSERT INTO TABLE6 VALUES ('4', '小明', '汽车');
INSERT INTO TABLE6 VALUES ('5', '小红', '步行');
INSERT INTO TABLE6 VALUES ('6', '小红', '轮船');
INSERT INTO TABLE6 VALUES ('7', '小黑', '汽车');
INSERT INTO TABLE6 VALUES ('8', '小黑', '飞机');
INSERT INTO TABLE6 VALUES ('9', '小黑', null);
SELECT * FROM TABLE6 ;
方法
SELECT NAME,STRING_AGG(TYPE,',') AS TYPE FROM TABLE6 GROUP BY NAME;
如果有重复数据你会发现是这样的结果
如果想去重复数据在加一个DISTINCT即可解决
SELECT NAME,STRING_AGG(DISTINCT TYPE,',') AS TYPE FROM TABLE6 GROUP BY NAME
总结:欢迎有其他方法的小伙伴来讨论!