web-dev-qa-db-ja.com

SQL Serverの一時テーブルから一時ビューを作成する

一時テーブルがあり、この一時テーブルの一時ビューを作成したいと考えています。

出来ますか?

次の例では、#Top10Recordsをテーブルではなくビューにして、

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

残念ながら、SQL Serverはこれをサポートしていません。

メッセージ4103、レベル15、状態1、行3
"#someView":一時的なビューは許可されていません。
メッセージ4508、レベル16、状態1、行6
ビューまたは関数は一時テーブルでは許可されていません。 「#」で始まるテーブル名は一時テーブルを示します。

9
marc_s

これを行うには、共通テーブル式を使用できます。

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

SQL Serverは一時ビュー自体をサポートしていないため、上記のDarylによって述べられているように、おそらく共通テーブル式が適しています。ただし、CTEの制限の1つは、バッチ内の複数のクエリで使用できないことです。ただし、標準ビューを作成し、必要に応じて使用して、バッチ/トランザクションの最後にドロップするだけです。 (私はOPの質問が一時的なビューを作成できるかどうかを知っていますが、これも適用される可能性があります-スキーマの変更が必要ですが、すべての意図と目的に対して一時的な変更が必要です)。

0