根据我在网上可以找到的少量证据,我最喜欢的postgres聚合之一是“list”,归因于“idocs中的Chris Rohlfs”。修改postgresql“list”聚合以删除重复项
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 = '');
我发现,有时候我希望消除重复。 old mailing list thread暗示这种方法不能进行排序,这可能是一个重复删除的交易杀手。 Another post in the same thread建议一个功能,做同样的事情;也许它为此目的更易修改?
与此同时,我只是用另一种语言按摩输出。但是如果我们可以直接在postgres中做到这一点,那将会很酷!
见更新后 – Quassnoi 2009-02-18 22:40:00
从编辑感动:很遗憾,Quassnoi的原始方法似乎没有帮助;我从最初使用的方法中得到了新方法的结果列表。我曾尝试添加初始$ 1 = $ 2然后$ 1,尽管我不知道SORTOP。 – 2009-02-19 17:30:18