2012-06-27 2 views
0

Я написал запрос в этом формате ..работа вокруг временной таблицы в SQL Server 2008 вид

Select * INTO #xyz FROM() 

, который позже я хочу использовать, чтобы создать представление, так как ...

CREATE VIEW aaa 
AS 
    Select * INTO #xyz FROM() 

но возникают следующие ошибки:

  1. Неверный синтаксис рядом с ключевым словом «INTO».
  2. Представления или функции не допускаются на временных таблицах

Может кто-то пожалуйста, предложить обходной путь это? Можно ли использовать временные таблицы для создания представлений?

+0

Какова ваша конечная цель? Что вы хотите сделать с этой временной таблицей? – squillman

+0

Вы не можете. Представления представляют собой операции с одним заявлением. Вы можете использовать «CTE», чтобы сохранить читаемый код. – Praveen

ответ

3

Вы, конечно, не можете использовать избранный в в представлении. И таблица termp также не approraite. Вместо этого используйте производную таблицу, которая эквивалентна таблице temp. Пример:

Предположим, вы имели:

select t1.id, t2.field1 into #temp from table1 t1 
join Table2 t2 on t1.id = t2.id 
where t2.somefield2 = 'mytest' 

select t1.id, t2.field1, t1.field1 
from mytable2 t1 
join #Temp t2 on t1.id = t2.id 
where t2.somefield = 'test' 

Тогда вы могли бы использовать:

select t1.id, t2.field1, t1.field1 
from mytable2 t1 
join (select t1.id, t2.field1 
     from table1 t1 
     join Table2 t2 on t1.id = t2.id 
     where t2.somefield2 = 'mytest') t2 
    on t1.id = t2.id 
where t2.somefield = 'test' 

Вы также можете USEA КТР

+0

Хорошо, что вы упомянули производные таблицы. SQL очень сложен, что является радостью. – buckley

+0

Спасибо, собираюсь попробовать это. – Nir

1

Как указано в сообщении об ошибке, невозможно использовать временные таблицы.

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

CTE может помочь вам в зависимости от вашей ситуации. Опишите свою проблему в каком-то контексте, если считаете это подходящим после изучения того, что такое CTE. Короче говоря, CTE - это запрос, который вы можете ссылаться несколько раз, что в прошлом люди использовали временные таблицы.

http://msdn.microsoft.com/en-us/library/ms190766(v=sql.105).aspx

Смежные вопросы