SSIS根据另一个表中的行动态选择列名

时间:2018-06-11 13:20:10

标签: sql sql-server dynamic ssis

我想使用SSIS

基于另一个表中的行选择动态列

例子:我有表A,其中我有要查询的列的名称。所以我想查询表B中名称存储在表A中的列。

我在SQL查询中找到了一种方法,但我不知道如何在SSIS中这样做。

DECLARE @columnList VARCHAR(MAX),@sql VARCHAR(MAX)

SELECT @columnList = COALESCE(@columnList+',' ,'') + columnName
FROM [dbo].[tableA]


SET @sql = 'SELECT ' + @columnList + ' FROM dbo.TableB'

EXEC(@sql)

有什么建议吗?

谢谢

1 个答案:

答案 0 :(得分:1)

使用执行SQL任务查询表A,并使用存储在那里的列名称使用SQL查询字符串填充字符串类型包变量。您刚刚添加到问题中的代码可以执行,但不是执行@sql变量,而是将其返回到执行SQL任务并使用它填充变量。

然后在您的数据流中,使用"来自变量的查询"您的Source组件的选项,并运行存储在您的字符串变量中的查询。

编辑:在进一步检查您的目标时,我不得不说创建一个可以更改列的数据流。数据流的元数据是在包创建时创建的,不能在运行时更改。