• You write SET only once in update clause:

    WITH UpdateAverageLabourCost (ProductId,OH,Labour) AS

    (

    SELECT

    AC.ProductId,

    AC.OH,

    AC.AVGDirectLabour + MAN + SUB - OH AS Labour

    FROM dbo.AVGCost AC

    INNER JOIN dbo.Products p ON AC.ProductId = p.CrossReference

    WHERE Type <> 'P' AND AVGDirectLabour >0

    )

    UPDATE dbo.Products

    SET Products.SLC = Labour,

    Products.SOC = OH

    FROM

    UpdateAverageLabourCost

    WHERE Products.CrossReference = UpdateAverageLabourCost.ProductId

    Regards

    Piotr

    ...and your only reply is slàinte mhath