Подтвердить что ты не робот

Объединить несколько строк в один столбец без дубликатов

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

Данные выглядят следующим образом:

Player Score
001      10
001      20
002      20
002      20
001      10
002      10
003      20
002      20
001      10

Я хочу, чтобы он отображался так:

Player Score
001    10,20
002    10,20
003    20

Но все, что я получаю, это комбинированный список всех данных в столбце оценки, подобный этому

Player Score
001    10,20,10,10
002    20,20,10,20
003    20

Есть ли у кого-нибудь идея, как сделать эту работу?

4b9b3361

Ответ 1

Для SQL Server вы можете использовать:

select player,
  stuff((SELECT distinct ', ' + cast(score as varchar(10))
           FROM yourtable t2
           where t2.player = t1.player
           FOR XML PATH('')),1,1,'') 
from yourtable t1
group by player

Ответ 2

Немного поздно и немного не по теме, как для другой RDBMS, но я нашел этот поток, который ищет решение этой проблемы в Postgres. Я нашел один, поэтому, если кому-то еще нужно решить эту проблему в Pg:

SELECT string_agg(DISTINCT <column>,'delimiter') FROM <table> GROUP BY <column2>

Ответ 3

UPDATE AllNews 
    SET ArticleSource = pp.[NewsText]
  FROM AllNews AS an
  INNER JOIN (  select t1.Id,
  stuff((SELECT distinct '.' + t2.[Text]
           FROM NewsPhotos t2
           where t2.NewsId = t1.Id
           FOR XML PATH('')),1,1,'') as [NewsText]
             from AllNews t1
             group by t1.Id) as pp
  ON pp.Id = an.Id