2012-03-08 15 views
2

あるテーブルから結果を取得し、別のテーブルにコピーするストアドプロシージャを作成しています。完全一致ではない、私は1列を変更して別の列を無視している。 5つの列があり、関連性がある場合は平均3〜5の結果が得られます。SQL Serverストアドプロシージャ - SELECTステートメントは、INSERTステートメントで結果を使用します。

私は基本的に行う必要があります。すべての結果のためにその後

SELECT * FROM sometable WHERE somecolumn = 1 

INSERT INTO anothertable (a,b,c) VALUES (@a, @b, @c) 

ストアドプロシージャ内でこれを行うための最善の方法は何ですか?あなたが1つのステートメントでこれを行うことができます

答えて

6

INSERT AnotherTable (a, b, c) 
SELECT a, b, c 
FROM SomeTable 
WHERE SomeColumn = 1 

可能な限り、ループ/カーソル/ RBAR(苦渋の行ごと)で物事を避け、代わりに上記のようなSETベースのアプローチで考えてみます。

+0

でした「」@zに置き換えられ、事前に定義された変数をテーブルの外に? – MattP

+0

@MattP - はい、その結果、各行に同じ値が挿入されます – AdaTheDev

3

私はあなたが選択クエリから直接挿入することができ

insert into anothertable (a,b,c) 
select a, b, c from sometable where somecolumn = 1 
2

ような何かをしようとするだろう:

INSERT INTO anothertable (a,b,c) 
SELECT @a, @b, @c FROM sometable WHERE somecolumn = 1 
+0

@aが文の前に定義された別の変数で、bとcだけが表にある場合、これは機能しますか? – MattP

+0

はい - 必要に応じて混在させることができます。@ aを変数として宣言し、@ bと@cをsometableの列名に置き換えて、同じ値を持つ列のすべての値を挿入しますそれぞれの@aの – Bridge

関連する問題