Динамический сводный запрос без сохранения запроса в виде строки - PullRequest
3 голосов
/ 26 июля 2011

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

http://www.simple -talk.com / community / blogs / andras / archive /2007/09/14 / 37265.aspx

1 Ответ

2 голосов
/ 26 июля 2011

Краткий ответ: №.

Длинный ответ:

Ну, это все еще нет . Но я постараюсь объяснить, почему. На сегодняшний день, когда вы запускаете запрос, ядро ​​БД требует знать структуру результирующего набора (количество столбцов, имена столбцов, типы данных и т. Д.), Которые запрос будет возвращать. Следовательно, вы должны определить структуру результирующего набора при запросе данных из БД. Подумайте об этом: вы когда-нибудь выполняли запрос, в котором заранее не знали бы структуру набора результатов?

Это также применяется, даже когда вы делаете select *, что является просто синтаксисом сахара. В конце возвращаемая структура - «все столбцы в таких таблицах».

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

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

Обновление

Я нашел это, что подтверждает причины, по которым оно не работает.

Здесь

Служба SSIS полагается на предварительное знание метаданных потока данных и Динамический поворот (что вам нужно) не совместим с что.

Я буду продолжать искать и добавлять сюда.

...