-- ?????
DECLARE @m TABLE (ID INT IDENTITY(1,1), code INT, aname VARCHAR(10), typeT INT)
INSERT INTO @m (code , aname , typeT )
SELECT *
FROM
(
SELECT code, bname, 1 Typet
FROM @b-2
UNION ALL
SELECT code, cname, 2 Typet
FROM @C
) x
SELECTA.CODE, A.ANAME, M.ANAME, N.ANAME
FROM@mM
FULL JOIN@mN
ONM.CODE= N.CODE
ANDM.ID = (N.ID%(SELECT MIN(o.id) FROM @m O WHERE O.typet = 2 and O.code = M.code))+
((SELECT MIN(Q.id) FROM @m Q WHERE Q.typet = 1 and Q.code = M.code))
RIGHT JOIN@a A
ONA.code = M.CODE
ORA.code = N.CODE
WHERE
(M.TYPET = 1 OR M.TYPET IS NULL)
AND(N.TYPET = 2 OR N.TYPET IS NULL)