Как объединить все данные столбца результирующих строк в один столбец? - PullRequest
0 голосов
/ 07 августа 2020

У меня запрос на основе регистра. Ниже приведена простейшая форма

select Column 1 from mytable 

Результаты:

    Column 1        
   latinnametest
   LatinManual
   LatinAuto

Можно ли показать агрегированные данные столбца 1 данных всех полученных строк в другом Столбец означает столбец 5 перед каждой строкой с разделением запятой?

Ожидаемый:

Column 1         Column 2
latinnametest  latinnametest,LatinManual,LatinAuto
LatinManual    latinnametest,LatinManual,LatinAuto
LatinAuto      latinnametest,LatinManual,LatinAuto

Я использовал array_agg и concat () , но он объединяет те же данные строки в столбце 2, но не так, как ожидалось, чтобы добавить все данные столбца строк, разделенные запятыми. Любая помощь, пожалуйста.

Изменить: Я пробовал решение, упомянутое ниже, но я получаю повторяющиеся данные в столбце. смотрите скриншот. Я наведу указатель мыши на последний столбец и вижу повторяющиеся данные. Любое решение для этого? введите описание изображения здесь

1 Ответ

1 голос
/ 07 августа 2020

Вы можете использовать string_agg() как оконную функцию:

select column_1, 
       string_agg(column_1, ',') over () as all_values
from the_table;

Редактировать после изменения области:

Если вам нужны различные значения, используйте производную таблицу:

select column_1, 
       string_agg(column_1, ',') over () as all_values
from (
  select distinct column_1
  from the_table
) t;

В качестве альтернативы с общим табличным выражением:

with vals as (
  select string_agg(distinct column_1, ',') as all_values
  from the_table 
)
select t.column_1, v.all_values
from the_table t
  cross join vals v
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...