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)来划分代码,以便更清晰。您可能希望对一个或多个查询结果进行复杂查询,这些查询结果本身是由复杂查询生成的。您可以将查询逻辑拆分,以便更容易理解,而不是将所有查询逻辑混淆。