Вывести заголовок из вывода SQL-запроса

#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