2017-07-18 81 views
-2

在SSIS中使用数据流任务,对于特定的Id,我需要从两个表中获取一个描述。第一个表应该在ParentTable.Id上连接以获得ParentTabel.Description,第二个连接应该用SubCatagoryTable.ParentId列来获取SubCatagoryTable.Description。然后我必须保持非NULL值,除非两个描述都是NULL。基于第一个查找输出的第二次查找

回答

1

对查询执行单一查询,该查询执行从您的类别表到您的子类别表和COALESCE描述列的OUTER JOIN,以便如果来自子类别表的描述为NULL(不在表),然后使用类别表中的描述。

+0

这个答案是正确的 – KeithL

+0

我在同一个表上的外连接获得了什么? – Proffesore

+0

错字。我的意思是将该类别加入子类别。我会纠正的。 –

3

使用一个查询。

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 

更新基于您的评论:

使用两个查找(设置不匹配的忽视,这将留下空的不匹配:

首先查找:

集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 

现在使用派生DESCR: DESCR = ISNULL(UsingSubDescr)? UsingParent:UsingSubDescr

+0

在行级别的子类别表我有提供者ID,所以我没有类别说明。 – Proffesore

+0

@Poffesore - 根据您的意见更新 – KeithL

+0

感谢您的更新。非常明确的答案 – Proffesore