Я хочу получить набор столбцов из временной таблицы в виде строки. Следующие:
select name from tempdb.sys.columns where object_id = object_id('tempdb..##myTempTable')
дает что-то вроде
|name|
------
Col1
Col2
Col3
Col4
...
Могу я повернуть это, чтобы получить
col1 | Col2 | Col3 | Col4 | ...? В столбцах, НЕ как одно значение.
Я не буду знать названия столбцов заранее.
Чтобы уточнить, мне нужны не значения, разделенные запятыми (как и другие вопросы), а столбцы.
Ой, извини. Тогда это не дубликат того вопроса.
Но это может быть его дубликат: SQL Server динамический запрос PIVOT?


declare @cols varchar(max)=''
declare @query varchar(max)
select @cols=''''+name+''','+@cols from tempdb.sys.columns
where object_id = object_id('tempdb..##myTempTable')
select @cols=left(@cols,len(@cols)-1)
set @query= 'select ' + @cols
execute(@query)
Если вам нужен столбец имени, измените эту строку
select @cols=''''+name+''''+ name +','+@cols from sys.columns
where object_id = object_id('hrc.dbo.car')
Почему голос против? Кроме того, я не получил ваш комментарий @PatrickSchomburg
Нет единого синтаксиса, который бы таким образом сводил эти данные.
В языке SQL (для любой базы данных) есть твердое требование, что вы знаете номер и тип каждого столбца в результатах во время компиляции запроса. Это необходимо для того, чтобы ядро базы данных могло определить правильные разрешения и вычислить план выполнения. Даже запросы SELECT * удовлетворяют этому требованию, поскольку количество и типы столбцов в таблицах, используемых запросом, фиксированы и известны (по крайней мере, в течение срока действия одного запроса).
То, что требует этот вопрос, нарушает это требование. Заголовки столбцов определяются данными, и поэтому механизм базы данных не может знать, сколько столбцов ему нужно для результатов, пока после запрос не начнет выполняться.
Единственный способ обойти это - разбить запрос на три отдельных шага:
Ты прав. Даже ответ от @Horaciux дает ряд имен столбцов.
Возможный дубликат получить строку с разделителями-запятыми из строк