2017-12-19 9 views
0

whileループ内のすべてのサイクルで、SQLの文字列を反復して新しい列に連結する方法があるかどうかを知りたい。SQL連結と反復

set nocount on 

declare @rowcount INT, 
    @BL_A VARCHAR(MAX) 
set @rowcount =2 


while @rowcount <=12 
begin 
    set @BL_A = '[DB1].[dbo].[Table1].[Col_'+CAST(@rowcount as varchar(MAX))+']' 
    print @BL_A 

    update [DB1].[dbo].[Table1] 
    set @BL_A = [DB2].[dbo].[Table2].[Y_Value] 
    from [DB2].[dbo].[Table2] 
    where [DB1].[dbo].[Table1].[X_Value] = [DB2].[dbo].[Table2].[X_Value]; 

    set @rowcount= @rowcount+1 
end 
print 'End of Script' 

クエリは、このオフにエラーが発生して印刷することなく実行されますが、以下のようにしてみてください、

[DB1].[dbo].[Table1].[Col_2] 
[DB1].[dbo].[Table1].[Col_3] 
.... 
[DB1].[dbo].[Table1].[Col_12] 
End of Script 
+0

代わりに[DB2]。[dbo]。[Table2]。[Y_Value] = @ BL_A'を試してください。 – Hackerman

+0

カラムに値を設定することはできません。この場合、列から値へのみ移動します。私は_Microsoft SQL 2008_ – Sleepyfalcon

+0

を使用しています。あなたのコードはどちらの意味も理解できません...達成しようとしていることを詳しく説明できますか? – Hackerman

答えて

1

がテーブルを更新する動的問合せを作成してください列を更新しません:

exec ('update [DB1].[dbo].[Table1] 
    set '[email protected]_A+' = [DB2].[dbo].[Table2].[Y_Value] 
    from [DB2].[dbo].[Table2] 
    where [DB1].[dbo].[Table1].[X_Value] = [DB2].[dbo].[Table2].[X_Value];') 

HTH!

+0

あなたはウィザードです。とても奇妙なことが何か簡単に働いた。ありがとう! – Sleepyfalcon