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

Откуда:
Сообщений: 10
Доброго дня.
MSSQL 2008

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

Сообщение 208, уровень 16, состояние 0, процедура LinkedPivot, строка 78
Invalid object name '#t3'.


		--строим pivot
		declare @doc_id table(doc_id varchar(25));
		insert into @doc_id(doc_id)
		select distinct doc from #t1;
		
	
		declare @sql_command nvarchar(max);
		select @sql_command = '
select * into #t3 from
	 (
				select *  from
				( 
					select doc,tovar, limit, sold, qty from #t2
				) product_data
				pivot
				( sum(qty) for doc in (';

				select @sql_command = @sql_command + '[' + doc_id + '], '
				from @doc_id;

				select @sql_command = substring(@sql_command, 1, len(@sql_command) - 1);
				select @sql_command = @sql_command + ')  ) pivot_data 
	 ) pv';
				
		print @sql_command;
		exec sp_executesql @sql_command;

		select * from #t3
14 апр 17, 10:55    [20401616]     Ответить | Цитировать Сообщить модератору
 Re: Как Pivot засунуть во временную таблицу?  [new]
o-o
Guest
таблица#t3 видна только в динамическом коде,
как только его исполнение прекращается, #t3 умирает.
если бы она была создана ДО динамики, другое дело
14 апр 17, 11:01    [20401649]     Ответить | Цитировать Сообщить модератору
 Re: Как Pivot засунуть во временную таблицу?  [new]
dsr
Member

Откуда:
Сообщений: 10
Блин, точно.
Но до динамики создавать ее нету смысла, структура то ведь пока неизвестна.
Что тут можно придумать?
14 апр 17, 11:04    [20401655]     Ответить | Цитировать Сообщить модератору
 Re: Как Pivot засунуть во временную таблицу?  [new]
o-o
Guest
засуньте select * from #t3 в динамику, тогда #t3 еще жива и селект выполнится.
или вообще без временной таблицы обойдитесь,
раз нужен только селект из нее
14 апр 17, 11:06    [20401660]     Ответить | Цитировать Сообщить модератору
 Re: Как Pivot засунуть во временную таблицу?  [new]
o-o
Guest
если же таблица планируется использоваться дальше и вне динамики, сделайте ее постоянной
14 апр 17, 11:08    [20401666]     Ответить | Цитировать Сообщить модератору
 Re: Как Pivot засунуть во временную таблицу?  [new]
dsr
Member

Откуда:
Сообщений: 10
o-o
засуньте select * from #t3 в динамику, тогда #t3 еще жива и селект выполнится.
или вообще без временной таблицы обойдитесь,
раз нужен только селект из нее


Спасибо,все получилось.
14 апр 17, 11:19    [20401705]     Ответить | Цитировать Сообщить модератору
 Re: Как Pivot засунуть во временную таблицу?  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1838
еще есть ##t3 - глобальные времянки
14 апр 17, 11:59    [20401861]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить