0

我用这种格式写了一个查询..

Select * INTO #xyz FROM ()

后来我想用它来创建一个视图,如......

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

但出现以下错误:

  1. 关键字“INTO”附近的语法不正确。
  2. 临时表上不允许视图或函数

有人可以建议一个解决方法吗?是否可以使用临时表来创建视图?

4

2 回答 2

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

于 2012-06-27T14:21:07.070 回答
1

正如错误消息所说,无法使用临时表。

您应该使用也可以在视图中指定的永久表或 CTE。

CTE 可以根据您的情况为您提供帮助。如果您在研究 CTE 是什么后认为合适,请用一些上下文描述您的问题。简而言之,CTE 是一个查询,您可以多次引用它,过去人们使用临时表。

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

于 2012-06-27T14:18:28.463 回答