Каков синтаксис, чтобы изменить это?

Я хочу получить набор столбцов из временной таблицы в виде строки. Следующие:

 select name from tempdb.sys.columns where object_id = object_id('tempdb..##myTempTable')

дает что-то вроде

|name|
------
Col1
Col2
Col3
Col4
...

Могу я повернуть это, чтобы получить col1 | Col2 | Col3 | Col4 | ...? В столбцах, НЕ как одно значение.

Я не буду знать названия столбцов заранее.

Возможный дубликат получить строку с разделителями-запятыми из строк

Zohar Peled 08.05.2018 18:02

Чтобы уточнить, мне нужны не значения, разделенные запятыми (как и другие вопросы), а столбцы.

Patrick Schomburg 08.05.2018 19:14

Ой, извини. Тогда это не дубликат того вопроса.

Zohar Peled 08.05.2018 21:10

Но это может быть его дубликат: SQL Server динамический запрос PIVOT?

Zohar Peled 08.05.2018 21:17
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
4
45
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

 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

Horaciux 10.05.2018 16:16
Ответ принят как подходящий

Нет единого синтаксиса, который бы таким образом сводил эти данные.

В языке SQL (для любой базы данных) есть твердое требование, что вы знаете номер и тип каждого столбца в результатах во время компиляции запроса. Это необходимо для того, чтобы ядро ​​базы данных могло определить правильные разрешения и вычислить план выполнения. Даже запросы SELECT * удовлетворяют этому требованию, поскольку количество и типы столбцов в таблицах, используемых запросом, фиксированы и известны (по крайней мере, в течение срока действия одного запроса).

То, что требует этот вопрос, нарушает это требование. Заголовки столбцов определяются данными, и поэтому механизм базы данных не может знать, сколько столбцов ему нужно для результатов, пока после запрос не начнет выполняться.

Единственный способ обойти это - разбить запрос на три отдельных шага:

  1. Выполните более простой запрос, чтобы определить заголовки столбцов для окончательных результатов.
  2. Используйте результаты из # 1 для создания новой строки SQL на лету
  3. Выполните запрос из №2 и верните его результаты пользователю.

Ты прав. Даже ответ от @Horaciux дает ряд имен столбцов.

Patrick Schomburg 10.05.2018 16:03

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