2011-10-30 19 views
5

現在の状況に問題があり、ネット上の任意のソリューションを検索しましたが、まだ取得できません。ここSQL Server:動的な列を使用してテンポラリテーブルを作成する

質問:私は、文のそれぞれが異なるデータベースから選択することにより、挿入を行って、内部のカーソルを使用して、ならびにによって、ストアドプロシージャで実行される必要があるSQL文の束を有する

表。例えば

INSERT INTO Database1.Table1(column1, column2, column3) 
    SELECT column1,column2, column3 
    FROM Database2.Table2 
    WHERE --Some Condition 

、多分別の実行されたSQL文は、基本的に私のプロセスは、2つのSQL文以上のことから、この

Execute Sql to insert into temp Tables --> Insert into a permanent Table from Temp Tables 

のようなものです、この

INSERT INTO Database1.Table3(column1, column2, column3, column4) 
    SELECT column1, column2, column3, column4 
    FROM Database3.Table3 
    WHERE --Some Condition 

オーケーのようなものです、データベース2または3から実行された結果、または4,5などである可能性があります。または永続的な店。それを伝えるもっと要約された方法では、私はちょうど別の処理を行うために、データベースの別のソースから取得してローカルデータベースに格納するデータの別のコピーを作成したいだけです。

私の主な問題は、担当者(またはマネージャー)が実行したすべての結果をTEMPテーブルまたは#Tableに入れてパーマネントに実行するように指示したことです。このような

何か:

INSERT INTO #Table3(column1, column2, column3, column4) 
    SELECT column1, column2, column3, column4 
    FROM Database3.Table3 
    WHERE --Some Condition 

私は#Tempテーブル上のいくつかの研究を経て、私は彼らのほとんどは、このような

CREATE TABLE #Table 
(
    column1 VARCHAR(10), 
    column2 VARCHAR(10), 
    column3 VARCHAR(10) 
) 

問題として「FIX」列で作成されたそれを見つけた:ありとにかく動的な列でそれを作成するには?より詳細な方法を尋ねるには、カラムをプレフィックスなしで#Tempテーブルに選択して挿入する必要がありますか?なぜなら、実行されたSQLごとに一揃いの一時テーブルを作成することは不可能だからです。

はあなたに

PS 1ありがとう:私はSQL Serverへのかなりの初心者です、私のミスやエラーを声に躊躇しないでください。私たちはすべて間違いから学びます。

PS 2:貧しい私の英語のレベルで申し訳ありませんが、私はそれをより明確に詳しく説明しました。

よろしく:

LiangCk

+2

あなたは 'SELECT'の結果に基づいてテーブルを作成するためにcoloum1、coloum2、coloum3、Database3.Table3' FROM#表3 INTO coloum4をSELECT'使用することができます。それはあなたが意味することですか? –

+0

これは必要ありません。なぜなら、それぞれが異なるcoloumを持つ数百のSQLを扱う可能性があるからです。もし私が何をしたら、それは私が数百のTempテーブルを作成することを意味しますか? – Worgon

+0

あなたは何を達成したいのか分かりません。私が理解しているように、異なる列を持つ複数のテーブルがあり、このデータを一時テーブルに挿入する必要があります。データベース全体を一時データベースにバックアップしてリストアするだけではできませんか?いずれか、またはあなたは、異なる一時テーブルの束を管理する必要があります。 –

答えて

5

あなたが最初に固定された列を持つ一時テーブルを作成することなく

 


INSERT INTO #Table3(coloum1,coloum2,coloum3,coloum4) 
Select coloum1,coloum2,coloum3,coloum4 
FROM Database3.Table3 
WHERE --Some Condition 

 

ような何かをしたいと言います。

 


Select coloum1,coloum2,coloum3,coloum4 
INTO #Table3 
FROM Database3.Table3 
WHERE --Some Condition 

 

あなただけの一時テーブルに選択し、一時テーブルを作成したり、最初の列を指定する必要はありません、それはその場で作成されます。

これが働くだろう。

あなたはこれ以上のことをしたいように思えます...私はそれが何であるかは分かりませんが、さまざまなテーブルのすべてのデータを単一の一時テーブルに選択するように思えますなぜあなたがこれをしたいと思うのか分からない)...そうなら、UNIONまたはUNION ALLが動作するはずです。これらは、動的に作成された一時テーブルでも引き続き使用できます。

 


Select coloum1,coloum2,coloum3,coloum4 
INTO #Table3 
FROM Database3.Table3 
WHERE --Some Condition 

UNION 

Select column1, column2, column3, null 
FROM Database1.Table1 
WHERE --Some condition 

 

上記nullは(私はあなたのポストの両方から選択を使用)だけ最初のと同数の列を選択する2を与えることです。これはUNIONの要件です。

+0

ya、thanks Jeremy ...これは私が必要としたものです。 – Worgon

関連する問題