0

この形式でクエリを作成しました。

Select * INTO #xyz FROM ()

後でビューを作成するために使用したいのですが...

CREATE VIEW aaa
AS 
   Select * INTO #xyz FROM ()

ただし、次のエラーが発生します。

  1. キーワード「INTO」の近くの構文が正しくありません。
  2. ビューまたは関数は一時テーブルでは許可されていません

誰かがこれの回避策を提案できますか?一時テーブルを使用してビューを作成することは可能ですか?

4

2 に答える 2

3

ビューで 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を使用することもできます

于 2012-06-27T14:21:07.070 に答える
1

エラー メッセージが示すように、一時テーブルを使用することはできません。

ビューでも指定できる永続テーブルまたは CTE を使用する必要があります。

状況に応じて、CTE がお手伝いします。CTE とは何かを調査した後で適切だと思われる場合は、問題を文脈とともに説明してください。つまり、CTE は、過去に一時テーブルを使用していた、複数回参照できるクエリです。

http://msdn.microsoft.com/en-us/library/ms190766(v=sql.105).aspx

于 2012-06-27T14:18:28.463 に答える