この形式でクエリを作成しました。
Select * INTO #xyz FROM ()
後でビューを作成するために使用したいのですが...
CREATE VIEW aaa
AS
Select * INTO #xyz FROM ()
ただし、次のエラーが発生します。
- キーワード「INTO」の近くの構文が正しくありません。
- ビューまたは関数は一時テーブルでは許可されていません
誰かがこれの回避策を提案できますか?一時テーブルを使用してビューを作成することは可能ですか?
この形式でクエリを作成しました。
Select * INTO #xyz FROM ()
後でビューを作成するために使用したいのですが...
CREATE VIEW aaa
AS
Select * INTO #xyz FROM ()
ただし、次のエラーが発生します。
誰かがこれの回避策を提案できますか?一時テーブルを使用してビューを作成することは可能ですか?
ビューで select into を使用することはできません。また、termp テーブルも適切ではありません。代わりに、一時テーブルと同等の派生テーブルを使用してください。例:
あなたが持っていたとします:
select t1.id, t2.field1 into #temp from table1 t1
join Table2 t2 on t1.id = t2.id
where t2.somefield2 = 'mytest'
select t1.id, t2.field1, t1.field1
from mytable2 t1
join #Temp t2 on t1.id = t2.id
where t2.somefield = 'test'
次に、次を使用できます。
select t1.id, t2.field1, t1.field1
from mytable2 t1
join (select t1.id, t2.field1
from table1 t1
join Table2 t2 on t1.id = t2.id
where t2.somefield2 = 'mytest') t2
on t1.id = t2.id
where t2.somefield = 'test'
CTEを使用することもできます
エラー メッセージが示すように、一時テーブルを使用することはできません。
ビューでも指定できる永続テーブルまたは CTE を使用する必要があります。
状況に応じて、CTE がお手伝いします。CTE とは何かを調査した後で適切だと思われる場合は、問題を文脈とともに説明してください。つまり、CTE は、過去に一時テーブルを使用していた、複数回参照できるクエリです。
http://msdn.microsoft.com/en-us/library/ms190766(v=sql.105).aspx