PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Group_concat equivalente in postgresql 8.2.11

Il "non del tutto duplicato" nei commenti dovrebbe indicarti la giusta direzione:crea il tuo aggregato funzione . Per prima cosa avrai bisogno di una funzione di concatenazione di stringhe non aggregate, qualcosa del genere:

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

Quindi puoi definire la tua versione aggregata di quella funzione:

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

Ora puoi group_concat tutto quello che vuoi:

select group_concat(s)
from t
group by g

L'ho tirato fuori dai miei archivi ma penso che dovrebbe funzionare in 8.2.

Tieni presente che la 8.2 non è più supportata, quindi potresti voler eseguire l'upgrade ad almeno 8.4 il prima possibile.