

------解决思路----------------------
SELECT D.NM,ISNULL(T2.ZL,0)ZL,D.GG FROM D LEFT JOIN(试下
SELECT T1.NM,SUM(T1.ZL*C.SL)ZL FROM
(SELECT DM,A_NM NM,ZL FROM A
UNION ALL SELECT DM,B_NM,ZL FROM B)T1
JOIN C ON T1.DM=C.DM
GROUP BY T1.NM
)T2 ON D.NM=T2.NM


SELECT D.NM,ISNULL(T2.ZL,0)ZL,D.GG FROM D LEFT JOIN(试下
SELECT T1.NM,SUM(T1.ZL*C.SL)ZL FROM
(SELECT DM,A_NM NM,ZL FROM A
UNION ALL SELECT DM,B_NM,ZL FROM B)T1
JOIN C ON T1.DM=C.DM
GROUP BY T1.NM
)T2 ON D.NM=T2.NM