PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Стойностите на масива се показват в ред по ред за единичен идентификатор с помощта на Postgresql

Искате да групирате вашите данни, така че мястото, където да търсите, е в [списък с агрегатни функции] (https://www.postgresql.org/docs/current/functions-aggregate.html ), в този случай това е string_agg ( value text, delimiter text ) → text

Искате да свържете данните от имена и отдели и искате имената и отделите да са в отделни редове, както е показано в примера. За това E'\n' трябва да се използва разделител:

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

Отговорът ви показва как и коментарите обясняват защо не . Сега изборът е ваш.

РЕДАКТИРАНЕ 1

Ако предпочитате да запазите броя на записите и да показвате ID с първия ред на групата, тогава трябва да разгледате функциите на прозореца. По-конкретно 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 сравнява текущия идентификатор с този от предишния ред и го извежда или нулева стойност.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на релационни връзки в PostgreSQL чрез pgAdmin

  2. INSERT редове в множество таблици в една заявка, избирайки от включена таблица

  3. Преглед на генерираните колони за PostgreSQL

  4. Групирайте и пребройте събития за интервали от време, плюс текуща обща сума

  5. Postgresql изберете, докато се достигне определена обща сума