Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 PIVOT и динамический SQL  [new]
flashslash
Member [заблокирован]

Откуда:
Сообщений: 820
Господа, кто знает ответ?
есть хранимка, которая должна возвращать запрос с задаваемым кол-вом стлобцов в PIVOT

хотел сделать динамический SQL со строкой типа:
set @s_ = 'select * from #T
			select * 
			from
			( select * from #T )AS T
			PIVOT
			( SUM(ID) FOR [Description] IN ('+@IN2+') )PivotTable'

exec (@s_)
понимаю, что вероятно так не получится, но как тогда сделать SELECT с задаваемым перечислением в IN Для PIVOT ?
20 окт 11, 17:33    [11474569]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT и динамический SQL  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
flashslash,

попробуйте работать не со временной таблицей, а с постоянной
либо заполнять её в той же динамике, если получится
в целом подход рабочий
20 окт 11, 17:50    [11474740]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT и динамический SQL  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
хотя для начала надо было спросить, почему вы считаете, что не получится
20 окт 11, 17:51    [11474753]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT и динамический SQL  [new]
flashslash
Member [заблокирован]

Откуда:
Сообщений: 820
Shakill,

потому что этот код не работает, возвращается сообщение:

Msg 203, Level 16, State 2, Line 108
Имя "select * from #T
			select * 
			from
			( select * from #T )AS T
			PIVOT
			( SUM(ID) FOR IDFieldMetaInfo IN ([1],[2],[3],[4]) )PivotTable" не является допустимым идентификатором.


а вот если хардкод применить в IN тогда все работает без вопросов.

а постоянную таблицу использовать плохо....вы это сами понимаете..
кстати я использую временные таблицы, потому что почему-то табличная переменная в динамическом запросе также не работает...
она используется у меня выше для операции вставки записей.
20 окт 11, 17:58    [11474807]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT и динамический SQL  [new]
flashslash
Member [заблокирован]

Откуда:
Сообщений: 820
то есть этот код работает, но не в динамическом SQL
20 окт 11, 18:09    [11474866]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT и динамический SQL  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
flashslash, вот очень странно, вы написали exec (@s_) со скобками, а текст ошибки такой, как будто в вашем выполняемом коде оно без скобок
20 окт 11, 18:13    [11474885]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT и динамический SQL  [new]
Glory
Member

Откуда:
Сообщений: 104751
flashslash
то есть этот код работает, но не в динамическом SQL

Потому что вызов динамического запроса это
exec(@s_)
а
exec (@s_) - это вызов процедуры, имя которой сохранено в переменной @s_
20 окт 11, 18:14    [11474888]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT и динамический SQL  [new]
Начинающий SQL 2008
Member

Откуда:
Сообщений: 438
flashslash,

Перевернуть выборку

З.Ы. Pivot - это более короткая запись Case
7374759
10662522
20 окт 11, 18:15    [11474898]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT и динамический SQL  [new]
flashslash
Member [заблокирован]

Откуда:
Сообщений: 820
Всем огромное спасибо!
я действительно писал
 exec @s
, вместо
exec(@s)
21 окт 11, 10:47    [11476887]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить