Not sure I understand but you might be able to relate the Level of the inner query to the level of the update row with; UPDATE BM_CostedBOMSET new_std_cost = (ISNULL(std_labor,0) + ISNULL(std_burden,0) + ISNULL(std_outplant,0) + ISNULL(( SELECT SUM(ISNULL(CST.new_std_cost,0) * BM.qty_per_par) FROM BMPRDSTR_SQL BM INNER JOIN BM_CostedBOM CST ON (CST.item_no = BM.comp_item_no) WHERE BM.item_no = BM_CostedBOM.item_no AND CST.Level + 1 = BM_CostedBOM.Level),0))
--KenI want to die in my sleep like my grandfather, not screaming in terror like his passengers.