I bludgeoned this to death with a subquery that returns the correct results as follows:
SELECT M.BoMWOID, m1.BoMTotMaterialEstimate,
CAST(SUM(D.BoMItemUnitLaborHrs * D.BoMLaborComplexity * D.BoMEItemQty) AS money) AS BoMTotLaborHrsEstimate,
CAST(SUM(D.BoMItemUnitLaborHrs * D.BoMLaborComplexity * D.BoMEItemQty * DI.BudgetHourlyRate) AS money) AS BoMTotLaborCostEstimate,
CAST((sum(D.BoMItemUnitLaborHrs * D.BoMLaborComplexity * D.BoMEItemQty * DI.BudgetHourlyRate) + M1.BoMTotMaterialEstimate) AS money)
AS BoMTotCostEstimate
FROM dbo.tblBoM AS M INNER JOIN
dbo.tblBoMDetail AS D ON M.BoMID = D.BoMID INNER JOIN
dbo.tblWorkOrders AS WO ON M.BoMWOID = WO.ID INNER JOIN
dbo.tblDiscipline AS DI ON WO.WODiscipline = DI.ID LEFT JOIN
(select BoMWOID,sum(BoMEstimatedMaterialCost) AS BoMTotMaterialEstimate from tblBoM Group By BoMWOID) as M1 on M.BoMWOID=M1.BoMWOID
Attached is an image of the table structures and relationships:
GROUP BY M.BoMWOID, m1.BoMTotMaterialEstimate
Is this the best approach?
Jim