我正在尝试根据多个条件将PRODUCTS
表与PROD_REF
表联系起来。问题是加入这两个表没有一致的密钥。
UPC代码对PROD_REF
中的每个项目都是唯一的,但PRODUCTS
表中可能有多个匹配(或根本不匹配)。我们希望测试来自PRODUCTS
表中的列UPC1,UPC2,UPC3,UPC4,UPC5和UPC6的匹配以及PROD_REF中的UPC
列。
它变得更加复杂,因为PROD_REF
表中的一些(不是全部)UPC代码具有前导零。因此,我们需要考虑" UPC n"来自PRODUCTS
的代码是"包含在" PROD_REF
中的UPC代码。如果找不到匹配项,那么我们会考虑组合制造商名称和部件号,并希望我们得到一个匹配项。
这也有点棘手,因为通常只有部分匹配制造商名称,但始终与Part#完全匹配。 (但是,不止一个制造商可能拥有与其产品相关的相同部件号。)
那么,有谁想帮我解决这个野兽? :)提前谢谢。
我们可以在任何地方放置索引等。
[产品]
ID UPC 1 UPC 2 UPC 3 UPC 4 UPC 5 UPC 6 Manufacturer Manufacturer Part #
1 78698502014 7869850201 78698404301 NULL NULL NULL RADIATOR SPECIALTY EB1
16 78698718101 7869845980 78698459806 NULL NULL NULL RADIATOR SPECIALTY GR1
17 45408020007 4540802000 NULL NULL NULL NULL MAASDAM 144SB-6
18 45408010008 4540801000 NULL NULL NULL NULL MAASDAM 144S-6 1
19 79843002137 7757801495 NULL NULL NULL NULL FROST KING 3A59
27 36448124640 3644812464 2906970464 NULL NULL NULL FRANKLIN ELECTRIC P 11010Y152
[PROD_REF]
ITEM_PIK UPC MFR_FULLNAME MFR_CAT_NUM MFR_DESCRIPTION PRODUCT_NAME
510 78698502014 RADIATOR SPECIALTY EB1 SUBMERSIBLE PUMP <-- 1*
512 78698459806 RADIATOR SPECIALTY GR1 SUBMERSIBLE PUMP <-- 2*
513 045408020007 MAASDAM 144SB-6 DUAL PURPOSE PUMP <-- 3*
516 7757801495 FROST KING / EXTRA 3A59 DUAL PURPOSE PUMP <-- 4*
只需添加更多内容。 我在PROD_REF表中省略了一些细节 - 它还包括描述细节,Image_URL和其他一些项目。
理想情况下,输出看起来如下所示:
ID ITEM_PIK UPC 1 UPC 2 UPC 3 UPC 4 UPC 5 UPC 6 MFR_FULLNAME PRODUCT_NAME MFR_CAT_NUM DESCRIPTION_DETAILS IMAGE_URL
1 510 78698502014 7869850201 78698404301 NULL NULL NULL RADIATOR SPECIALTY PUMP EB1 Blah, blah, blah www.abc.com/images/123abc.jpg
16 512 78698718101 7869845980 78698459806 NULL NULL NULL RADIATOR SPECIALTY PUMP GR1 Blah, blah, blah www.abc.com/images/456abc.jpg
17 513 45408020007 4540802000 NULL NULL NULL NULL MAASDAM PUMP 144SB-6 Blah, blah, blah www.abc.com/images/789abc.jpg
或者,我很满意只有一个UPC代码匹配的列(如果有的话);所以像:
ID ITEM_PIK UPC MFR_FULLNAME PRODUCT_NAME MFR_CAT_NUM DESCRIPTION_DETAILS IMAGE_URL
1 510 78698502014 RADIATOR SPECIALTY PUMP EB1 Blah, blah, blah www.abc.com/images/123abc.jpg
16 512 78698718101 RADIATOR SPECIALTY PUMP GR1 Blah, blah, blah www.abc.com/images/456abc.jpg
17 513 45408020007 MAASDAM PUMP 144SB-6 Blah, blah, blah www.abc.com/images/789abc.jpg
答案 0 :(得分:0)
可能不是最好或最漂亮的解决方案,但我在想这样的事情?至少在第一部分。
SELECT
ID
,ITEM_PIK
,UPC1
,UPC2
,UPC3
,UPC4
,UPC5
,UPC6
,MFR_FULLNAME
,PRODCUT_NAME
,MFR
,case when B.PRODUCT_NAME is null then
case when C.PRODUCT_NAME is null then
case when D.Product_name is null then
..
else
d.product_name
end
else
c.product_name
end
else
b.product_name
end as [Product_Name]
FROM
PRODUCTS A
left join [PROD_REF] B ON (A.UPC1 = B.UPC)
left join [PROD_REF] C ON (A.UPC2 = C.UPC)
left join [PROD_REF] D ON (A.UPC3 = D.UPC)
left join [PROD_REF] E ON (A.UPC4 = E.UPC)
left join [PROD_REF] F ON (A.UPC5 = F.UPC)
left join [PROD_REF] G ON (A.UPC6 = G.UPC)