SQL - 连接和迭代

时间:2017-12-19 16:50:20

标签: sql-server

想知道是否有一种方法可以在while循环中的每个循环中迭代并将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

1 个答案:

答案 0 :(得分:1)

请创建动态查询以更新表格,请尝试如下:

exec ('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];')

HTH!