Macbernie Macbernie - 6 months ago 10
SQL Question

SQL Concatenate both lines in a single one

I have in my table this kind of lines:

key column1 column2 column3 column4
657 Monsieur Jean Valjean Directeur
657 Monsieur Jean Valjean Président
657 Monsieur Jean Valjean Secrétaire
785 Monsieur Hervé Wo Trésorier
963 Madame Élodie Haka Vendeuse
963 Madame Élodie Haka Responsable


The data is the same for the column key, column1, column2 and column3, but only the data of column4 is different.

I need a request to optain:

key column1 column2 column3 column4
657 Monsieur Jean Valjean Directeur;Président;Secrétaire
785 Monsieur Hervé Wo Trésorier
963 Madame Élodie Haka Vendeuse;Responsable


Thanks for help.

Answer

Use group by:

select key, col1, col2, col3, string_agg(col4, ';')
from t
group by key;