【问题标题】:SSIS 2005 Can Merge Join accommodate one-to-many joinsSSIS 2005 可以合并连接适应一对多连接
【发布时间】:2011-03-08 19:56:31
【问题描述】:

我有一个数据流任务,它执行一些脚本组件任务、排序,然后执行合并连接。我想让 Merge Join 以 1-many 的形式加入。如果我进行 Inner Join,我得到的记录太少:

如果我执行左外连接,我会得到太多记录:

我正在寻找“Just Right”的 Goldilocks 版本(这将是 39240 条记录)。

【问题讨论】:

  • 这更像是一个数据库问题,所以发布示例表结构、示例数据、预期结果。抛出一个漂亮的 SSIS 图表/visio 图表非常漂亮,但完全无助于解决您的问题。

标签: sql-server-2005 ssis ssis-2005


【解决方案1】:

您可以在合并连接的左连接版本之后添加条件拆分,使用不匹配的条件,例如

isnull(tmpAddressColumn)

并将相关的匹配流条件(默认输出)发送到您的目的地。

如果仍然没有得到正确的编号,则需要检查合并连接条件,并检查每个源中是否存在重复 ID。

【讨论】:

  • 我很欣赏这个答案,但我不确定如何实现它。我能够通过在数据流中进行操作并转储 2 个表中的值,然后使用执行 SQL 任务运行 UPDATE 脚本将列值添加到目标表中来解决它。
【解决方案2】:

行数不应该是您用来衡量您是否使用了正确的合并连接选项。结果数据集应该是驱动因素。 tmpManAddress 表中的结果是否正确?

对于开发,您可能希望将脚本组件的输出推送到表中,这样您就可以查看您开始使用的数据。这将允许您计算出哪种类型的连接以及在哪些列上,为您提供所需的结果。

【讨论】:

    猜你喜欢
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    相关资源
    最近更新 更多