我在MS SQL中有3个表,我想加入:
表1:
CFG Part Commodity
---------------------
CFG1 PN1 Com1
CFG1 PN2 Com1
CFG1 PN3 Com1
CFG2 PN4 Com2
表2:
Part Site Product
-----------------------
PN1 Site1 Prod1
PN1 Site1 Prod2
PN1 Site2 Prod1
PN4 Site1 Prod1
表3:
Product Family LOB
--------------------
Prod1 Fam1 LOB1
Prod2 Fam2 LOB1
我使用以下查询来连接这3个表: -
select distinct b.CFG, a.Part, b.Commodity, a.Site, c.Family,
c.LOB, c.Product
from Table_2 a, Table_1 b, Table_3 c
where b.Part = a.Part and c.Product = a.Product
这是我得到的结果: -
CFG Part Commodity Site Family LOB Product
-----------------------------------------------------------
CFG1 PN1 Com1 Site1 Fam1 LOB1 Prod1
CFG1 PN1 Com1 Site1 Fam2 LOB2 Prod2
CFG1 PN1 Com1 Site2 Fam1 LOB1 Prod1
CFG2 PN4 Com2 Site1 Fam1 LOB1 Prod1
这一切都很好但是该部分应该将所有值转换回CFG以及该CFG下的所有其他部分。例如,PN1的值应转换为CFG1,然后转换为PN2和PN3。这就是我希望看到的结果: -
CFG Part Commodity Site Family LOB Product
-----------------------------------------------------------
CFG1 PN1 Com1 Site1 Fam1 LOB1 Prod1
CFG1 PN2 Com1 Site1 Fam1 LOB1 Prod1
CFG1 PN3 Com1 Site1 Fam1 LOB1 Prod1
CFG1 PN1 Com1 Site1 Fam2 LOB2 Prod2
CFG1 PN2 Com1 Site1 Fam2 LOB2 Prod2
CFG1 PN3 Com1 Site1 Fam2 LOB2 Prod2
CFG1 PN1 Com1 Site2 Fam1 LOB1 Prod1
CFG1 PN2 Com1 Site2 Fam1 LOB1 Prod1
CFG1 PN3 Com1 Site2 Fam1 LOB1 Prod1
CFG2 PN4 Com2 Site1 Fam1 LOB1 Prod1
花了很多时间思考如何做到最后寻求你的帮助。
答案 0 :(得分:0)
这很疯狂,但试试这个:
SELECT DISTINCT a.CFG, a.Part, a.Commodity, b.Site
, c.Family, c.LOB, c.Product
FROM Table_1 as a
CROSS JOIN Table_2 as b
INNER JOIN Table_3 as c ON c.Product = b.Product
WHERE b.Part in (SELECT Part FROM Table_1 as t WHERE t.CFG = a.CFG)
ORDER BY a.CFG, c.Family, b.Site