【问题标题】:Second lookup based off the first lookup output基于第一次查找输出的第二次查找
【发布时间】:2017-07-18 11:03:38
【问题描述】:

在 SSIS 中使用数据流任务,对于特定的 Id,我需要从两个表中获取描述。第一个表应该在 ParentTable.Id 上加入以获取 ParentTabel.Description,第二个加入应该与 SubCatagoryTable.ParentId 列获取子类别表。描述。然后我必须保留非 NULL 值,除非两个描述都是 NULL。

【问题讨论】:

    标签: ssis


    【解决方案1】:

    使用一个查询。

    select coalesce(sub.ID,cat.ID) as ID,coalesce(sub.Descr,cat.Descr) as Descr
    from CategoryTable cat
    left join SubCatagoryTable sub on cat.ID=sub.ParentID
    

    根据您的评论更新:

    使用两次查找(将不匹配设置为忽略,这将为不匹配留下空值:

    第一次查找:

    Set UsingSubDescr 等于一个匹配项:

    select sub.ID,cat.Descr as Descr
    from CategoryTable cat
        join SubCatagoryTable sub on cat.ID=sub.ParentID
    

    第二次查找:

    在匹配时设置 UsingParent:

    Select ID,descr
    from ParentTable
    

    现在使用派生描述: 描述 = isnull(UsingSubDescr) ? UsingParent : UsingSubDescr

    【讨论】:

    • 在行级别的子类别表中,我有提供者 ID,所以我没有类别描述。
    • @Proffesore -- 根据您的评论更新
    【解决方案2】:

    针对从类别表到子类别表执行 OUTER JOIN 并 COALESCE 描述列的查询进行单次查找,这样如果子类别表中的描述为 NULL(因此不在表中) 然后使用类别表中的描述。

    【讨论】:

    • 在同一张表上使用外连接可以获得什么?
    • 错字。我的意思是将类别加入子类别。我会纠正的。
    • 当两个数据集中都有一个 ID(因为它们是不同表中的键)时,他会遇到麻烦。这就是为什么我改为双重查找然后派生。
    • 另一种方法是查找以选择不同的 ID,描述两个查找查询的联合。我可以使用您的答案进行修改吗?或者只有当提供者名称同时存在于 cat 和 subcat 表中时它才会起作用?
    • 从问题和其他答案中发布的内容来看,我不清楚为什么这个答案不能按原样工作。也许如果您发布您的表定义和示例数据,我可以提供进一步的帮助。
    猜你喜欢
    • 2011-10-04
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    相关资源
    最近更新 更多