Вы хотите что-то подобное
CREATE TABLE #BoM
(
MainPartNo VARCHAR(20),
RequiredPartNo VARCHAR(20),
Quantity INT
)
INSERT INTO #BoM (MainPartNo, RequiredPartNo, Quantity)
VALUES ('AssemblyA', 'ChildA', 2), ('AssemblyA', 'ChildA', 2),
('AssemblyA', 'ChildB', 2), ('AssemblyA', 'ChildC', 2),
('AssemblyA', 'PartA', 1), ('AssemblyA', 'PartB', 2),
('AssemblyB', 'ChildA', 2), ('AssemblyB', 'ChildD', 3),
('AssemblyB', 'ChildE', 1), ('AssemblyB', 'PartA', 1)
CREATE TABLE #Serial
(
ParentSerialNo INT,
ChildSerialNo INT,
PartNoChild VARCHAR(20),
PartNoParent VARCHAR(20)
)
INSERT INTO #Serial (ParentSerialNo, ChildSerialNo, PartNoChild, PartNoParent)
VALUES (5001, 10001, 'ChildA', 'AssemblyA'),
(5001, 10002, 'ChildA', 'AssemblyA'),
(5001, 11001, 'ChildB', 'AssemblyA'),
(5001, 11002, 'ChildB', 'AssemblyA'),
(5001, 12001, 'ChildC', 'AssemblyA'),
(5001, 12002, 'ChildC', 'AssemblyA'),
(5002, 10003, 'ChildA', 'AssemblyB'),
(5002, 10004, 'ChildA', 'AssemblyB'),
(5002, 13001, 'ChildD', 'AssemblyB'),
(5002, 13002, 'ChildD', 'AssemblyB'),
(5002, 13003, 'ChildD', 'AssemblyB'),
(5002, 14001, 'ChildE', 'AssemblyB')
SELECT
MainPartNo,
ParentSerialNo,
RequiredPartNo,
ChildSerialNo
FROM
#BoM B
FULL JOIN
#Serial S ON B.MainPartNo = S.PartNoParent
AND B.RequiredPartNo = S.PartNoChild
Но я предполагаю, что в вашей таблице BoM есть столбец, подобный MainPortSerialNo
, iIf, поэтому используйте MainPortSerialNo
вместо ParentSerialNo
в запросе