SSIS包,用于选择行数的百分比并在表中创建记录

时间:2016-08-09 19:16:51

标签: sql-server ssis dynamics-crm-2011

作为套餐的一部分,我正在尝试执行以下操作:

我对表AAA运行查询以获取值X(即int)。我想查询表BBB以列出顶部X(表AAA中的结果值)记录百分比,然后根据查询结果创建表CCC的新记录。 因此,我创建了一个SQL编辑器,并在SQLStatement下插入表AAA中的查询。我创建了一个结果集,其中结果名称作为包含X值的列名。我创建了2个变量...一个用于存储X值,另一个用于将SQl语句存储为字符串,并在Value下插入表BBB中的查询。然后我用变量""" SQL命令创建了一个OLE DB源代码。并使用存储SQL语句的变量。

select top (@Variable) percent * from BBB WHERE isdisabled <> 1 ORDER BY newid()

这总是让我错误地说TOP clause contains an invalid value

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

Matt评论使用此解决方案可能会更好: 您可以跳过创建SQL变量。在此TOP查询的数据源中,您可以选择SQL Command而不是table。然后输入Select TOP ? * From BBB WHERE isdisabled <> 1 ORDER BY newid()并将变量用作参数。

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/b55edd69-0a2c-4f61-bbd9-061f15d1f93e/pass-a-variable-pararmeter-to-an-ssis-data-source-query-sql?forum=sqlintegrationservices

如果您需要使用原始方法 - 您需要在Sql变量上添加表达式,以便解析第一个变量。你不能将@Variable硬编码到Sql变量的值中。

类似于:"Select Top " + @[User::TopVariable] + " * From ..."