2011-08-25 445 views
18

我有一個臨時表,我想通過這個臨時表創建一個臨時視圖。從SQL Server中的臨時表創建臨時視圖

可能嗎?

在下面的例子中,我想#Top10Records是一個視圖而不是表,讓我得到

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

回答

36

您可以使用公用表表達式來做到這一點:

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

+1這可能是最優雅的解決方法 - 良好的迴應 –

+8

當然,這隻適用於CTE之後的單一語句。我們不知道OP是否打算使用跨多個語句的臨時視圖。 –

+2

它的目的是多次使用,因爲#MytempTable將總是改變 – Thunder

6

不幸的是, SQL Server不支持:

Msg 4103,Level 15,State 1,Line 3
「#someView」:不允許臨時視圖。
消息4508,級別16,狀態1,行6
臨時表上不允許使用視圖或函數。以'#'開頭的表名稱 表示臨時表。