Dynami c количество столбцов в предложении select в sql server 2008 - PullRequest
0 голосов
/ 07 февраля 2020

У меня очень много динамиков c мне нужно получить значения столбцов из таблицы.

Скажем, у меня есть таблица, имеющая столбцы:

Name,
Date,
Col1,
Col2,
Col3,
...
col10

сейчас, в зависимости от того, какое условие хочет получить разные столбцы от col1 до col10 сверху таблицы, в которых сохраняются имя, столбцы даты всегда в предложении select. например, как показано ниже.

columns in output:  (1) Name (2) date (3) col1 + col2 + col3  (4) col4 + col5

то есть число столбцов и сами столбцы (colN) различаются.

Как мне этого добиться? Кроме того, фиксированные столбцы указываются непосредственно в предложении выбора, например ...

select Name, Date  ... from Table1

Но, чтобы получить оставшиеся значения столбцов для каждой строки, я использую табличную функцию. Итак, в этой функции, как я могу получить значение? Я могу сделать динамическую c sql строку, но не могу выполнить ее в функции, так что это ограничение, с которым я сталкиваюсь.

1 Ответ

0 голосов
/ 14 февраля 2020

Наконец-то это достигнуто .. генерация динамической c строки запроса и последующее ее выполнение.

Для генерации динамической c строки ... сначала взятие фиксированных столбцов с использованием «с», а затем с каждой строкой, выполняющей функцию , что-то как показано ниже.

set @str = '; с fn as (выбрать ... фиксированные столбцы из таблицы) выберите x. *'

, в то время как (условие) begin set set @cols = @cols + function_to_generate_dynamic_columns (@params) set @ i=@i+1 end

set @str = @str + @cols + 'из fn x'

EXECUTE (@str)

...