【问题标题】:ssis lookup with sum - can't map parametersssis 使用 sum 查找 - 无法映射参数
【发布时间】:2011-09-20 15:53:54
【问题描述】:

我有一个如下所示的 sql 查询:

SELECT SUM(A) AS expr1 FROM TREES WHERE (b = ?) AND (c = ?) and (d = ?)

如何映射参数?因为是总和,所以不能选择多行。

【问题讨论】:

  • 可能更好的问题是有没有其他方法可以做到这一点????
  • 看看这里,参数化 SQL 语句。 stackoverflow.com/questions/6687397/…
  • 您是要根据三个变量(如果是的话,它们是用户变量)来获取单个值,还是要根据包中的每一行查找一组结果?跨度>

标签: sql vb.net ssis lookup dts


【解决方案1】:

今天一个类似的问题让我陷入困境。映射参数很容易,但是得到总和值可能会导致真正的问题。所以这里是我在 SSIS 2008 中使用的设置。 我发现的关键点:

  1. 您的输出列取决于您在“连接”选项卡中的值。所以在那里写你的 SELECT 但不要担心 WHERE 子句。
  2. 您的输入参数映射到“高级”选项卡上
  3. 必须在“列”选项卡上使用“高级”选项卡上可用于参数的列,但“列”选项卡上的实际映射将被忽略,因此只需将其视为在“高级”选项卡上获取可用于参数的字段的一种方式。

这似乎是一个 hack,但我能够在 WHERE 子句中的两个条件中使用相同的输入列两次,并返回一个基于 SUM 的列和一个基于 COUNT 的列。

常规标签: 缓存模式:无缓存(所以我可以在高级选项卡上使用自定义查询) 连接类型:OLE DB 连接管理器


连接标签: SQL查询的使用结果:勾选 查询:(有我的求和函数来获取输出,但没有我的输入参数。查询将在“高级”选项卡上被覆盖,但我似乎需要在此处指定我的输出以映射我的求和字段)

SELECT 
    MIN(Company) CompanyFromSecurityNumber
   ,COUNT(OLIFundId) FundCountForSecurityNumber
FROM [db].[dbo].[table]

列标签: 从输入中映射您需要用作参数的列,以便它们在您的参数列表中可用。还要检查可用查找列的总和值,以便获得输出。尽管“高级”选项卡会被覆盖,但您的链接方式并不重要


高级标签: 修改选中的 SQL 语句。 (必须在常规选项卡上关闭缓存)

SELECT
   MIN(Company) CompanyFromSecurityNumber
   ,COUNT(OLIFundId) FundCountForSecurityNumber
FROM 
   [db].[dbo].[table]
WHERE
   CUSIP = ?
   OR
   ISIN = ?

参数按钮:单击并映射参数。唯一可用的是我在“列”选项卡上使用的那些。同样,只要我在这里正确使用它们,我在列选项卡上映射到的内容与它们的使用无关。


就是这样,我能够使用参数进行输入,并在字段名称“CompanyFromSecurityNumber”和“FundCountForSecurityNumber”中获取我的汇总字段(MIN 和 COUNT)

【讨论】:

    【解决方案2】:

    虽然讨厌俄亥俄州的答案很棒而且很完整,但对我来说解决问题要简单得多。只是第一步,在连接选项卡上将源更改为 SQL 就可以了。

    类似:

    SELECT 
    [ID]
    ,[Date]
    ,SUM([CountStuff]) AS [CountStuff]
    FROM [dbo].[Table]
    GROUP BY [ID], [Date]
    

    然后,匹配列并将列映射到查找并完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多