2016-11-20 3 views
-3

У меня есть таблица в SQL SSMS со значениями следующим образом:разделенный запятыми список с запятой в SQL

RID | Comments|     Date    |Date Without Miliseconds 


---------- 
780 |General Comment 2 |2016-11-20 14:12:44.097 |2016-11-20 14:12:44.000 

---------- 


780 |General Comment 1 |2016-11-20 14:05:23.687 |2016-11-20 14:05:23.000 


---------- 


780 |Document comment 1 |2016-11-20 14:05:23.687|2016-11-20 14:05:23.000 


---------- 

780 |DEIRDRE Nominations1 |2016-11-20 14:05:23.390 |2016-11-20 14:05:23.000 

Так что я хочу выход следующим образом:

---------- 
RID |List of Comments 


---------- 


780 |General Comment 1,Document comment 1,DEIRDRE Nominations1; General Comment 2 

Я не хочу изменить схему таблицы. Я добавил дату без столбца Miliiseconds, чтобы ее было легко группировать. Комментарии от Same DateTime должны быть разделены запятой и с другой даты. Время должно быть пропущено точкой с запятой ';'

Можете ли вы мне помочь?

Спасибо, Swarda

ответ

2

Вы можете использовать GROUP_CONCAT для этого.

SELECT RID, GROUP_CONCAT(Comments SEPARATOR ';') AS ListOfComments 
FROM table 
GROUP BY RID; 
+0

Он будет показывать значения, разделенные запятой, нам нужно использовать 'separator' для получения желаемого результата. –

+0

эй, спасибо за вашу помощь, но я хочу, чтобы комментарии были разделены запятой ',' с таким же временем, а затем точкой с запятой ';' чтобы отделить комментарии от разного времени. –

1

Вы должны использовать group_concat с concat для форматирования значений, например .:

select id, concat(group_concat(comment), ';') as comments 
from comments 
group by id; 

Вот SQL Fiddle.

+0

эй, спасибо за вашу помощь, но я хочу, чтобы комментарии были разделены запятой ',' с таким же временем, а затем с точкой с запятой ';' чтобы отделить комментарии от разного времени. –

+0

@SwardaAparaj отредактировал ответ и скрипт SQL. –

Смежные вопросы