#sql #sql-server
#sql #sql-сервер
Вопрос:
Запрос
select distinct Task_Date as LastSevendate from [TimeSheet]
where Task_Date between DateAdd(DD,-9,GETDATE()-1 ) and GETDATE()-1
ВЫВОД будет
2016-10-05 00:00:00.000
2016-10-06 00:00:00.000
2016-10-07 00:00:00.000
2016-10-10 00:00:00.000
2016-10-11 00:00:00.000
2016-10-12 00:00:00.000
2016-10-13 00:00:00.000
Мне нужно динамически печатать так в SQL. Пожалуйста, помогите мне
2016-10-05 00:00:00.000 2016-10-06 00:00:00.000 2016-10-07 00:00:00.000 2016-10-10 00:00:00.000 2016-10-11 00:00:00.000 2016-10-12 00:00:00.000 2016-10-13 00:00:00.000
Комментарии:
1. Поиск динамической сводки в Sql Server
2. Что вы подразумеваете под печатью? Что вы используете в качестве интерфейса? Я предлагаю
Write
и нетWriteLine
.3. Является ли желаемый результат одним полем? Или он должен быть разделен на столбцы? Если это только одно поле, вы захотите использовать
FOR XML
. В противном случае, как упоминалось в prdp, вы можете захотеть исследовать динамические сводные запросы.
Ответ №1:
Похоже, вы хотите конкатенацию строк. Один из методов:
select stuff( (select distinct ' ' convert(varchar(255), Task_Date, 121)
from [TimeSheet]
where Task_Date between DateAdd(day, -9, GETDATE() - 1 ) and GETDATE() - 1
for xml path ('')
), 1, 1, '')
Ответ №2:
Вы можете получить его с помощью переменной:
declare @column varchar(max) = ''
Select @column = @column ' ' Task_Date from timesheet
select @column
ВЫВОД:
2016-10-05 00:00:00.000 2016-10-06 00:00:00.000 2016-10-07 00:00:00.000 2016-10-10 00:00:00.000 2016-10-11 00:00:00.000 2016-10-12 00:00:00.000 2016-10-13 00:00:00.000