【发布时间】:2021-04-05 09:35:57
【问题描述】:
假设有一个表projects,其中包含项目名称、位置、团队 ID、开始和结束年份。如何连接行,以便相同的名称将其他信息组合成一个字符串?
name location team_id start end
Library Atlanta 2389 2015 2017
Library Georgetown 9920 2003 2007
Museum Auckland 3092 2005 2007
预期的输出如下所示:
name Records
Library Atlanta, 2389, 2015-2017
Georgetown, 9920, 2003-2007
Museum Auckland, 3092, 2005-2007
每一行都应该包含换行符/换行符。
我有一个功能,但我认为它不适用于仅使用CONCAT。还有什么其他方法可以做到这一点?我尝试了什么:
CREATE OR REPLACE TYPE projects (name TEXT, records TEXT);
CREATE OR REPLACE FUNCTION records (INT)
RETURNS SETOF projects AS
$$
RETURN QUERY
SELECT p.name
CONCAT(p.location, ', ', p.team_id, ', ', p.start, '-', p.end, CHAR(10))
FROM projects($1) p;
$$
LANGUAGE PLpgSQL;
我尝试使用 CHAR(10) 换行,但它给出了语法错误(不知道为什么?)。
上面的示例连接了字符串,但预计会遗漏重复的名称。
【问题讨论】:
标签: sql postgresql plpgsql