PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Group_concat équivalent dans postgresql 8.2.11

Le "pas tout à fait en double" dans les commentaires devrait vous orienter dans la bonne direction :créez votre propre agrégat fonction . Vous aurez d'abord besoin d'une fonction de concaténation de chaînes non agrégées, quelque chose comme ceci :

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

Ensuite, vous pouvez définir votre propre version agrégée de cette fonction :

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

Vous pouvez maintenant group_concat tout ce que vous voulez :

select group_concat(s)
from t
group by g

J'ai sorti ça de mes archives mais je pense que ça devrait marcher dans la 8.2.

N'oubliez pas que la version 8.2 n'est plus prise en charge. Vous pouvez donc effectuer une mise à niveau vers au moins la version 8.4 dès que possible.