我用这种格式写了一个查询..
Select * INTO #xyz FROM ()
后来我想用它来创建一个视图,如......
CREATE VIEW aaa
AS
Select * INTO #xyz FROM ()
但出现以下错误:
- 关键字“INTO”附近的语法不正确。
- 临时表上不允许视图或函数
有人可以建议一个解决方法吗?是否可以使用临时表来创建视图?
我用这种格式写了一个查询..
Select * INTO #xyz FROM ()
后来我想用它来创建一个视图,如......
CREATE VIEW aaa
AS
Select * INTO #xyz FROM ()
但出现以下错误:
有人可以建议一个解决方法吗?是否可以使用临时表来创建视图?
您当然不能在视图中使用 select into。并且 termp 表也不合适。请改用与临时表等效的派生表。例子:
假设你有:
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'
您也可以使用 CTE
正如错误消息所说,无法使用临时表。
您应该使用也可以在视图中指定的永久表或 CTE。
CTE 可以根据您的情况为您提供帮助。如果您在研究 CTE 是什么后认为合适,请用一些上下文描述您的问题。简而言之,CTE 是一个查询,您可以多次引用它,过去人们使用临时表。
http://msdn.microsoft.com/en-us/library/ms190766(v=sql.105).aspx