PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Group_concat-Äquivalent in postgresql 8.2.11

Der "nicht ganz dupliziert" in den Kommentaren sollten Sie in die richtige Richtung weisen:Erstellen Sie Ihr eigenes Aggregat Funktion . Zuerst benötigen Sie eine nicht aggregierte String-Verkettungsfunktion, etwa so:

create function concat(t1 text, t2 text) returns text as $$
begin
    return t1 || t2;
end;
$$ language plpgsql;

Dann können Sie Ihre eigene aggregierte Version dieser Funktion definieren:

create aggregate group_concat(
    sfunc    = concat,
    basetype = text,
    stype    = text,
    initcond = ''
);

Jetzt können Sie group_concat alles was du willst:

select group_concat(s)
from t
group by g

Ich habe das aus meinen Archiven ausgegraben, aber ich denke, es sollte in 8.2 funktionieren.

Denken Sie daran, dass 8.2 nicht mehr unterstützt wird, also sollten Sie so bald wie möglich auf mindestens 8.4 aktualisieren.