Как я могу удалить повторяющиеся строки, объединив символы (разделенные запятыми) в SQL Server? - PullRequest
0 голосов
/ 27 мая 2020

Мне нужно удалить дубликаты этой таблицы, как в таблице вывода на SQL сервере. Source_Table

Name School class Description Start_Date End_Date
Andy MTC    7     Pass        2008       2009
Andy MTC    8     Pass        2009       2010
Andy STC    9     Pass        2010       2011
Andy STC    10    Failed      2011       2012


Output_Table

Name School  class      Description                  Start_Date     End_Date
Andy MTC,STC    7,8,9,10    Pass,Pass,Pass,Failed        2008       2012

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Похоже, вы хотите агрегировать:

select name,
       string_agg(distinct school, ','),
       string_agg(class, ',') within group (order by class),
       string_agg(description, ',') within group (order by class),
       min(Start_Date), max(End_Date)
from t
group by name
1 голос
/ 27 мая 2020

Я не использую SQL -Server, поэтому я сделал этот ответ на основе документации в Inte rnet, но я думаю, вам следует использовать:

SELECT Name, STRING_AGG(school,',') AS School, STRING_AGG(class,',') AS Class, STRING_AGG(description,',') AS Description, MIN(start_date) AS Start_date, MAX(end_date) AS End_date FROM source_table GROUP BY Name

Подробнее о STRING_AGG в https://www.mytecbits.com/microsoft/sql-server/concatenate-rows-using-string_agg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...