我有一个数据源,其中包含一个Part_Number列。
我的第二个数据源包含Product_Family_ID,Product_ID和Part_Mask。
Mask是类似表达式中使用的模式字符串,其中part_number与mask类似。例如'NXA%'或'001- [abcd] [456] 9-121%'
通常我们根据可用的产品部件掩码查找产品系列的合法部件号,但在这种情况下,我需要朝另一个方向前进。根据部件号,我必须找到该产品系列中的所有相关产品,并将其存储在汇总表中。
在T-SQL中模拟:
declare @partlist table (partnumber varchar(100))
insert into @partlist (partnumber) values ('nxampvg1')
select distinct pl.partnumber, match.Product_ID
from @partlist pl
join ( select m.masks, p.product_id from MCS_ProductFamily_PartMasks m
join Product p on m.ProductFamilyID = p.ProductFamily_ID) match
on pl.partnumber like match.Masks
期望的输出:
Part_Number Product_ID
----------- ----------
nxampvg1 15629
nxampvg1 15631
nxampvg1 15632
nxampvg1 15633
nxampvg1 15634
nxampvg1 15635
nxampvg1 15636
nxampvg1 15637
nxampvg1 15638
nxampvg1 15639
如何在SSIS数据流任务中完成此任务?
答案 0 :(得分:1)
创建2个数据源,一个从源1获取所有部件号,另一个使用内部查询获取所有产品ID,产品系列和掩码
select m.masks, p.product_id from MCS_ProductFamily_PartMasks m
join Product p on m.ProductFamilyID = p.ProductFamily_ID
来源二。这些数据目标应该是同一个sql server上的登台表。然后,只需使用您在示例中说明的SQL的派生方式:select distinct pl.partnumber, match.Product_ID
from STG_SOURCE_ONE pl
join STG_SOURCE_TWO match
on pl.partnumber like match.Masks