Chcete svá data seskupit, takže místo, kde se můžete podívat, je [seznam agregovaných funkcí] (https://www.postgresql.org/docs/current/functions-aggregate.html
), v tomto případě je to string_agg ( value text, delimiter text ) → text
Chcete zřetězit data ze jmen a oddělení a chcete, aby jména a oddělení byla v samostatných řádcích, jak je znázorněno v příkladu. K tomu E'\n'
měl by být použit oddělovač:
SELECT
id,
string_agg(name, E'\n') as names,
string_agg(dept, E'\n') as depts
FROM
data
GROUP BY
id
ORDER BY
id;
Odpověď vám ukáže, jak na to a komentáře vysvětlují, proč ne . Volba je nyní na vás.
UPRAVIT 1
Pokud dáváte přednost zachování počtu záznamů a zobrazení ID s prvním řádkem skupiny, pak byste se měli podívat na funkce okna. Konkrétně LAG .
SELECT
CASE
WHEN id IS DISTINCT FROM LAG(id) OVER(order by id) THEN id
ELSE null
END as id,
name,
dept
FROM
data
order by
data.id;
SQL porovná aktuální id s id v předchozím řádku a vydá jej nebo hodnotu null.