我在这个格式写了一个查询..工作在SQL Server 2008中视图
Select * INTO #xyz FROM()
这是我后来想用它来创建一个视图,如...
CREATE VIEW aaa
AS
Select * INTO #xyz FROM()
但出现以下错误:
- 关键字'INTO'附近的语法不正确。
- 视图或函数不允许在临时表
是否有人可以提出一个解决办法呢?是否可以使用临时表来创建视图?
我在这个格式写了一个查询..工作在SQL Server 2008中视图
Select * INTO #xyz FROM()
这是我后来想用它来创建一个视图,如...
CREATE VIEW aaa
AS
Select * INTO #xyz FROM()
但出现以下错误:
是否有人可以提出一个解决办法呢?是否可以使用临时表来创建视图?
你肯定不能在视图中使用SELECT INTO。而且一张表头也不合格。相反,请使用等效于临时表的派生表。例如:
假设你有:
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的CTE
正如错误消息表明它不可能使用临时表。
您应该使用永久表或CTE,它也可以在视图中指定。
CTE可以帮助你取决于你的情况。如果在研究什么是CTE后认为它适合,请在某种情况下描述您的问题。简而言之,CTE是一个可以多次引用的查询,在过去,人们使用临时表来进行查询。
http://msdn.microsoft.com/en-us/library/ms190766(v=sql.105).aspx
什么是您的最终目标是什么?你想用临时表做什么? – squillman
你不能。视图是单个声明活动。您可以使用“CTE”来帮助保持代码可读性。 – Praveen