L'objectif est de regrouper plusieurs lignes, pour que chaque valeur de chaque ligne soit concaténée dans le même champ. Il faut obtenir, à partir de :
le résultat suivant :
id
1
2
masse
25, 30
15
select id, matricule, array_to_string(array_agg(masse),', ') as masse
from matable
group by id
order by id;
Il est parfois utile de trier le le champ de résultat. Voici un exemple avec une concaténation :
select uid, array_to_string(array_agg(code||':'||value order by code,value),',') as identifiants
from ...
group by uid
order by uid;
Ici, la concaténation s'effectue en accolant un code et une valeur (avec : comme séparateur), chaque couple étant séparé par une virgule. En rajoutant un order by
dans la clause array_agg
, l'affichage sera trié par code et par valeur.