私のお気に入りの postgres 集約の 1 つは「list」です。これは、Web 上で見つけられるわずかな証拠によると、「idocs の Chris Rohlfs」によるものです。
CREATE FUNCTION comma_cat (text, text)
RETURNS text AS
'SELECT CASE
WHEN $2 is null or $2 = '''' THEN $1
WHEN $1 is null or $1 = '''' THEN $2
ELSE $1 || '', '' || $2
END'
LANGUAGE sql;
CREATE AGGREGATE list (BASETYPE = text, SFUNC = comma_cat, STYPE = text, INITCOND = '');
重複を排除したいことが時々あります。古いメーリング リストのスレッドでは、このアプローチでは並べ替えができないことが示唆されています。同じスレッドの別の投稿では、同じことを行う関数が提案されています。多分それはこの目的のためにもっと修正可能ですか?
それまでの間、別の言語で出力をマッサージします。しかし、postgres で直接これを行うことができれば素晴らしいことです!