Как получить список времени, разделенный запятыми, в ms sql

У меня есть таблица с датами и именами. Даты - это дата и время, а имя - nvarchar (50). Это вот так:

ID   | Name   | Date
1    | Joe    | 12.12.2012.
2    | Joe    | 15.12.2013.

Как мне получить такой вывод:

ID   | Name   | Date
1    | Joe    | 12.12.2012.; 15.12.2013.

Я знаю, что могу получить это с помощью материала для xml, но тогда столбец Date будет nvarchar, и мне нужно сохранить дату и время для столбца Date. Является ли это возможным?

Здравствуйте, может вам поможет этот ответ: stackoverflow.com/questions/15477743/listagg-in-sqlserver

F.Lazarescu 08.06.2018 10:35

@ F.Lazarescu Как я уже упоминал, если я использую xml и прочее, он преобразует столбец в varchar, и мне нужно поддерживать тип данных datetime.

IvanVC 08.06.2018 10:39

Простите. Я не обратил на это внимания. У вас не может быть столбца даты с чем-либо, кроме даты ... и строка, которую вы хотите выводить, это строка ... поэтому ответ - нет

F.Lazarescu 08.06.2018 10:41

Спасибо за ответ.

IvanVC 08.06.2018 10:46

Как говорит @ F.Lazarescu, объединение дат в один столбец и сохранение их типа невозможно. Вы можете использовать PIVOT, который может создавать несколько столбцов Дата для каждого уникального Имя.

Chris Pickford 08.06.2018 11:58
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
5
188
1

Ответы 1

Во-первых, ваши данные имеют тип string, как показано, возможно, вы ищете даты в datetime или только в date.

Если да, то можно использовать concat():

select t.name,
       stuff( (select concat(';', convert(date, t1.[date], 103))
               from table t1
               where t.name = t1.name
               for xml path('')), 1,1, ''
              ) as Date
from table t
group by t.name;

Другие вопросы по теме