gpt4 book ai didi

Postgresql - 坚持构建 plpgsql 函数

转载 作者:行者123 更新时间:2023-11-29 12:33:13 27 4
gpt4 key购买 nike

我是 plpgsql 的初学者,我被困在编写一个函数中。我需要一个执行以下操作的函数:

给一个表,该表中的一个 id_field 和该表中的另一个字段:

原始表格

id_field     field_traspose
--------- --------------
1 A
1 B
1 C
2 A
3 F
3 X

结果

id_field     field_traspose
--------- --------------
1 A, B, C
2 A
3 F, X

我的尝试:

CREATE OR REPLACE FUNCTION traspose(mytable character varying, id_field character varying, field_traspose character varying)
RETURNS setof RECORD AS
$BODY$
DECLARE
r record;
result record;
BEGIN

FOR r IN EXECUTE 'SELECT '||id_field||','||field_traspose||' from '||mytable LOOP

-- Here should go the logic that joins every field_traspose for a same id_field and
--returns the record as one of the returning records (can be many different id_fields)

RETURN NEXT result;
END LOOP;

RETURN;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

我卡在这一步了。问候,

最佳答案

不需要这样的功能,这个已经内置了:

select id_field, 
string_agg(field_traspose, ', ' order by field_traspose)
from the_table
group by id_field
order by id_field;

关于Postgresql - 坚持构建 plpgsql 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28344460/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com