2016-08-03 17 views
0

私は正しい方向に私を向ける人を探しています。これを尋ねる方法もわからない。私が使用している言葉で見つけることができるものはすべて、別々のテーブルの結果を組み合わせることです。SQL Server:1つの行に複数の選択結果を挿入します。

私は1つのテーブルを持っており、1つの行の別のテーブルに入るために複数の選択結果が必要です。だから、私は1つの結果行として必要ないくつかのselect/as/whereクエリから新しい行を挿入する必要があります。

実際の基本的な意味では、これは必要ですが、10回以上の結果が日付/時刻参照付きの10以上の列になります。

Insert into [table2].[namealias1] 
    Select [number] as namealias1 
    From [db].[table] 
    Where [name] = 'name1' 

表1(ソース)

[NAME] [NUMBER] 

表2(宛先)

DATESTAMP NameAlias1 NameAlias2 

私が任意のSQLを行っていると私はいくつかのアドバイスとAを探していますので、長い時間となっています正しい方向に押します。これを攻撃する最良の方法についてのヒントもあります。これはSQL Server 2012上です。

ありがとうございました。

+0

1行には何が含まれていますか?各番号ごとに1つの列?クエリで100行が返される場合は、単一の行に100列あると想定していますか? – artm

+0

最初の和集合をすべて1つのテーブルに入れて、あなたのメソッドを使って保存してください –

+0

私はCTEテーブルまたは一時テーブルが必要だと思っています。 – cautrey

答えて

0

多分、CTEが問題の原因になる可能性があります。

が、私は、各select文の結果のための変数を宣言し、INSERT文で変数を使用する:あなたは、この(擬似コード)のようなもの

;with cte1 as 
(
    select col1, col2, ... ,colN 
    from table1 
    where conditions_for_table1 
), 
cte2 as 
(
    select col1, col2,... colK 
    from table2 
    where conditions_for_table2 
), 
...... 
...... 

insert into final_table(talbe columns here) 
select c1.col1,c2.col3, ... cM.colK 
from cte1 c1 
left join /*inner join*/ cte2 c2 on c1.joining_column = c2.joinint_column and ... 
..... 
left join cteM cM /*inner join*/ on ... 
+0

私はCTEと昨日一緒に働いていましたが、複数の条件に対応していません。名前で複数の行を選択し、選択した各行の値を表2の単一の行に戻す必要があります。 – cautrey

+0

単一行とは何ですか? CTEから取得したデータを集約する必要があるかもしれません。 –

+0

これは、選択したデータに変数を割り当てるのと同じですか? – cautrey

0

ブルートフォース方法を必要としています。

関連する問題