27

我有一个临时表,我想在这个临时表上创建一个临时视图。

是否可以?

在下面的示例中,我想#Top10Records成为一个视图而不是一个表,以便我得到

select * into #Top10Records from (select top 10 * from #MytempTable)
4

3 回答 3

53

您可以使用公用表表达式来执行此操作:

WITH Top10Records  AS 
( 
 select top 10 * from #MytempTable
) 
SELECT * FROM Top10Records 
GO
于 2011-08-25T05:37:46.510 回答
11

不幸的是,SQL Server 不支持这一点:

消息 4103,级别 15,状态 1,第 3 行
“#someView”:不允许临时视图。
Msg 4508, Level 16, State 1, Line 6
临时表上不允许视图或函数。以“#”开头的表名表示临时表。

于 2011-08-25T05:38:41.537 回答
0

SQL Server 不支持临时视图,正如上面 Daryl 所说,公共表表达式可能是要走的路。但是,CTE 的一个限制是它不能在一个批次中跨多个查询使用。但是,您可以创建一个标准视图,根据需要使用它,然后在批处理/事务结束时将其删除。(我知道 OP 的问题是您是否可以创建一个临时视图,但这也可能适用 - 它需要一个架构更改,但对于所有意图和目的来说都是一个临时的)。

于 2019-02-17T01:58:56.783 回答