"niezupełnie duplikat" w komentarzach powinien wskazywać właściwy kierunek:utwórz własny agregat funkcja . Najpierw będziesz potrzebować funkcji konkatenacji, która nie jest agregacją, coś takiego:
create function concat(t1 text, t2 text) returns text as $$
begin
return t1 || t2;
end;
$$ language plpgsql;
Następnie możesz zdefiniować własną zagregowaną wersję tej funkcji:
create aggregate group_concat(
sfunc = concat,
basetype = text,
stype = text,
initcond = ''
);
Teraz możesz group_concat
wszystko, czego chcesz:
select group_concat(s)
from t
group by g
Wykopałem to z moich archiwów, ale myślę, że powinno działać w wersji 8.2.
Pamiętaj, że wersja 8.2 nie jest już obsługiwana, więc możesz chcieć zaktualizować ją do co najmniej 8.4 tak szybko, jak to możliwe.