Because QReceived isn't available as an identifier until the resultset is produced i.e. can't be used to buildthe resultsetselect ProductID ProductID, MEPeriod, OpeningQty, QOpenCost , QUsageQty = OpeningQty + QReceived - ClosingQty, ProductNamefrom( SELECT MEND.ProductID, MEND.MEPeriod, MEND.OpeningQty, QOpenCost = MEND.OpeningDols / MEND.OpeningQty, QReceived = (SELECT Sum(UsageQty) FROM tblShipmentHdr SHPH WHERE MEND.ProductID = LEFT(SHPH.ProductID,7) And DATEADD(mm, DATEDIFF(mm,0,SHPH.ReceivedDate), 0) = MEND.MEPeriod GROUP BY LEFT(SHPH.ProductID,7)) , PROD.ProductName , MEND.ClosingQty FROM tblMonthend MEND LEFT OUTER JOIN dbo.tblProducts as PROD ON MEND.ProductID = PROD.ProductID WHERE (MEND.MEPeriod =''' + convert(varchar(40),@XFromDate,121) + ''')) a
==========================================Cursors are useful if you don't know sql.DTS can be used in a similar way.Beer is not cold and it isn't fizzy.