我想使用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)
有什么建议吗?
谢谢
答案 0 :(得分:1)
使用执行SQL任务查询表A,并使用存储在那里的列名称使用SQL查询字符串填充字符串类型包变量。您刚刚添加到问题中的代码可以执行,但不是执行@sql
变量,而是将其返回到执行SQL任务并使用它填充变量。
然后在您的数据流中,使用"来自变量的查询"您的Source组件的选项,并运行存储在您的字符串变量中的查询。
编辑:在进一步检查您的目标时,我不得不说创建一个可以更改列的数据流。数据流的元数据是在包创建时创建的,不能在运行时更改。