PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Wartości tablic są wyświetlane wiersz po wierszu dla pojedynczego identyfikatora za pomocą Postgresql

Chcesz pogrupować swoje dane, więc miejsce do wyszukania znajduje się w [lista funkcji agregacji] (https://www.postgresql.org/docs/current/functions-aggregate.html ), w tym przypadku jest to string_agg ( value text, delimiter text ) → text

Chcesz połączyć dane z nazw i działów i chcesz, aby nazwy i działy znajdowały się w osobnych wierszach, jak pokazano w przykładzie. W tym celu E'\n' należy użyć separatora:

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

Odpowiedź pokazuje, jak a komentarze wyjaśniają, dlaczego nie . Wybór należy teraz do Ciebie.

EDYTUJ 1

Jeśli wolisz zachować liczbę rekordów i wyświetlać identyfikator w pierwszym wierszu grupy, powinieneś zajrzeć do funkcji okna. W szczególności 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 porównuje bieżący identyfikator z identyfikatorem z poprzedniego wiersza i wyświetla go lub wartość pustą.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC — wybierz, gdzie kolumna ma wartość NULL

  2. postgresql nextval pytanie o sekwencje

  3. Jak zresetować sekwencję klawiszy podstawowych Postgres, gdy nie będzie ona zsynchronizowana?

  4. Usługa PostgreSQL nie może się zatrzymać/uruchomić/zrestartować

  5. Jak uzyskać zapytanie o atrybuty kolumny z nazwy tabeli za pomocą PostgreSQL?