2016-03-21 11 views
3

私はそれらを最初に定義する必要なく、一時テーブルに任意の数の列と種類を追加することができます私はどうすればよいか知っています:簡単にテンポラリテーブルにカラムを追加するには?</p> <pre><code>select into #temp from table; </code></pre> <p>をしかし、私は私のスクリプトの後の方で、この一時テーブルに列を追加したい場合は、唯一の方法:

これは、複数の列を追加したい場合、少し面倒です。最初に定義することなく、一時テーブルに列を追加する方法はありますか?

+0

カラムを追加し、 'select..into..from..'構造体を使用するたびにtempテーブルを削除してください。最初に定義したくないので、 –

+0

を定義せずに変更することはできません。一時テーブルは使用時に設計されています。更新することはできますが、変更することはできません。 –

答えて

4

私はinsertが列を追加した後に適切ではないと思います。 Updateはあなたが望む操作のように思えます。

1つのオプションは、新しい一時テーブルを作成することです:

select t.*, 'value' as col 
into #temp1 
from #temp t; 

しかし、既存のテーブルのために、列を追加すると同時に、それを移入する方法はありません - デフォルトを提供する以外値。

あなたは、しかし、同じ一度に複数の列を追加することができます。

alter #temp add col1 int, col2 int, col3 int; 

update #temp t 
    set col1 = 1, col2 = 2, col3 = 3; 
3

あなたが最終的に必要とするどのように多くの列を知っているほぼ確実です。 #tempテーブルの作成時に余分な列(テーブル/クエリ結果には存在しない)をダミーの定数値で作成することができます。

select *, '' as AdditionalStringColumn into #temp from table1; 

select *, 0 as AdditionalIntegerColumn into #temp from table1; 

select *, 0.0 as AdditionalDecimalColumn into #temp from table1; 

あなたはalter tableなどを扱うの混乱に取得する必要はありませんし、より優れた性能を持つことになりますこの方法です。

関連する問題