【问题标题】:SSIS package to select percentage of row count and create record in a tableSSIS包选择行数百分比并在表中创建记录
【发布时间】:2016-12-15 23:20:38
【问题描述】:

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

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

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

这总是给我一个错误,说TOP clause contains an invalid value

谁能帮我解决这个问题?

【问题讨论】:

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


    【解决方案1】:

    正如马特所说,使用此解决方案可能会更好: 您可以跳过创建 SQL 变量。在此 TOP 查询的数据源中,您可以选择 SQL 命令而不是表。然后输入Select TOP ? * From BBB WHERE isdisabled &lt;&gt; 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 ..."

    【讨论】:

    • 我的 2 美分是将使用 count 变量作为参数的 Edit 移动到顶部作为主要解决方案,如果其他人必须拥有该包,它肯定更干净,更容易解决问题。但是对于表达的需要是对另一种方法的钱。
    • 感谢您的快速回复!
    • 当我在 SQL 命令中使用变量传递参数时:选择 TOP ? * 从 BBB WHERE isdisabled 1 ORDER BY newid() 我收到此错误:OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80004005 描述:“语法错误、权限冲突或其他非特定错误”。当我使用 SQL 变量作为 Select Top "+@[User::Variable]+" * From Table WHERE isdisabled 1 ORDER BY newid() 我得到这个错误: Hresult: 0x80040E14 描述:“无效的列名 '+@ [用户::变量]+'.".
    • 对于第一个选项,请尝试从 BBB 中选择 top 1 *。这会让您知道是否真的存在权限问题,或者您是否没有正确设置参数。对于第二个选项,语句必须在表达式中,以便将变量解析为 int 值。例如,如果您给第一个变量一个默认值 1,那么在评估 sql 变量时,它应该读取 Select Top 1 * from...
    • 感谢乔帮助我,我真的很感激!当我尝试将变量传递为“?”在“WHERE”子句中,它工作正常,但从未在“select TOP ? *”中工作。我只是想知道是否有一种单独的方法可以为 TOP 查询传递变量。当我尝试使用 SQL 变量时,它总是给我语法错误。我尝试了大多数可能的方法来纠正语法。 Select Top "+@[User::Variable]+" * From FilteredSystemUser WHERE isdisabled 1 ORDER BY newid()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多