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

I valori dell'array vengono visualizzati riga per riga per ID singolo utilizzando Postgresql

Vuoi raggruppare i tuoi dati, quindi il posto dove cercare è in [elenco di funzioni aggregate] (https://www.postgresql.org/docs/current/functions-aggregate.html ), in questo caso è string_agg ( value text, delimiter text ) → text

Si desidera concatenare i dati di nomi e reparti e si desidera che i nomi e i reparti siano in righe separate, come mostrato nell'esempio. Per questo il E'\n' è necessario utilizzare il delimitatore:

SELECT
  id,
  string_agg(name, E'\n') as names,
  string_agg(dept, E'\n') as depts
FROM 
  data
GROUP BY
  id
ORDER BY
  id;

La risposta ti mostra come e i commenti spiegano perché non farlo . Adesso la scelta è tua.

MODIFICA 1

Se preferisci preservare il numero di record e visualizzare l'ID con la prima riga del gruppo, dovresti esaminare le funzioni della finestra. In particolare GAL .

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;

Il sql confronta l'id corrente con quello della riga precedente e lo restituisce o il valore null.