Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从SQL Server中的临时表创建临时视图_Sql Server_View_Temporary - Fatal编程技术网

Sql server 从SQL Server中的临时表创建临时视图

Sql server 从SQL Server中的临时表创建临时视图,sql-server,view,temporary,Sql Server,View,Temporary,我有一个临时表,我想在这个临时表上创建一个临时视图 可能吗 在下面的示例中,我希望#Top10Records是一个视图,而不是一个表,以便 select * into #Top10Records from (select top 10 * from #MytempTable) 您可以使用公共表表达式来执行此操作: WITH Top10Records AS ( select top 10 * from #MytempTable ) SELECT * FROM Top10Records

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

可能吗

在下面的示例中,我希望
#Top10Records
是一个视图,而不是一个表,以便

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

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

WITH Top10Records  AS 
( 
 select top 10 * from #MytempTable
) 
SELECT * FROM Top10Records 
GO

遗憾的是,SQL Server不支持以下内容:

味精4103,第15级,状态1,第3行
“#someView”:不允许临时查看。
Msg 4508,16级,状态1,第6行
临时表上不允许使用视图或函数。以“#”开头的表名 表示临时表


SQL Server不支持临时视图,正如Daryl前面所述,一个通用的表表达式可能是最好的选择。然而,CTE的一个限制是它不能在批处理中跨多个查询使用。
但是,您可以创建一个标准视图,根据需要使用它,然后简单地将其放在批处理/事务的末尾。(我知道OP的问题是你是否可以创建一个临时视图,但这也可能适用-它需要一个模式更改,但对于所有意图和目的来说都是暂时的)。

+1这可能是最优雅的解决方法-很好的响应当然,这只适用于CTE后面的一个语句。我们不知道OP是否打算在多个语句中使用temp视图。它打算被多次使用,因为#MyTestable将始终更改。我的解决方法是每次删除并创建另一个#Top10Records temp表。@IanLee您可以使用CTE(或多个链接CTE)来划分代码,以便更清晰。您可能希望对一个或多个查询结果进行复杂查询,这些查询结果本身是由复杂查询生成的。您可以将查询逻辑拆分,以便更容易理解,而不是将所有查询逻辑混淆。