我用这种格式写了一个查询..
Select * INTO #xyz FROM ()
我后来想用它来创建一个视图,如...
CREATE VIEW aaa
AS
Select * INTO #xyz FROM ()
但收到以下错误:
有人可以建议一个解决方法吗?是否可以使用临时表来创建视图?
答案 0 :(得分:3)
你当然不能在视图中使用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
答案 1 :(得分:1)
正如错误消息所示,无法使用临时表。
您应该使用永久表或CTE,也可以在视图中指定。
CTE可以根据您的情况帮助您。如果您在研究CTE之后认为合适,请在某些背景下描述您的问题。简而言之,CTE是一个可以多次引用的查询,过去人们使用临时表。
http://msdn.microsoft.com/en-us/library/ms190766(v=sql.105).aspx