У меня есть таблица с датами и именами. Даты - это дата и время, а имя - 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. Является ли это возможным?
@ F.Lazarescu Как я уже упоминал, если я использую xml и прочее, он преобразует столбец в varchar, и мне нужно поддерживать тип данных datetime.
Простите. Я не обратил на это внимания. У вас не может быть столбца даты с чем-либо, кроме даты ... и строка, которую вы хотите выводить, это строка ... поэтому ответ - нет
Спасибо за ответ.
Как говорит @ F.Lazarescu, объединение дат в один столбец и сохранение их типа невозможно. Вы можете использовать PIVOT, который может создавать несколько столбцов Дата для каждого уникального Имя.


Во-первых, ваши данные имеют тип 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;
Здравствуйте, может вам поможет этот ответ: stackoverflow.com/questions/15477743/listagg-in-sqlserver