Stock valuation - query v1

 Select
 ItemCode =S.Code,
 ItemDescription1 =S.Description_1,
 ItemDescription2 =S.Description_2,
 ItemGroupCode =G.StGroup,
 ItemGroupDesc = G.Description,
 Qty =
  SUM(CASE 
  WHEN Debit > 0 THEN Quantity
  ELSE -Quantity 
 END)
 --,StockValue =SUM( ROUND(Debit,2)-ROUND(Credit,2))
 ,SV = SUM(CASE
		WHEN P.Id NOT IN ('OInv', 'Crn') THEN ROUND(P.Debit,2)-ROUND(P.Credit,2)
		WHEN Debit > 0 AND P.Id IN ('OInv', 'Crn') THEN P.Quantity*P.Cost
		WHEN Credit > 0 AND P.Id IN ('OInv', 'Crn') THEN -P.Quantity*P.Cost
		ELSE 0 END)

 from PostST P
 LEFT JOIN StkItem S ON P.AccountLink = S.StockLink
 LEFT JOIN GrpTbl G ON S.ItemGroup = G.StGroup
 LEFT JOIN WhseMst W on WhseLink = P.WarehouseID
 WHERE P.TxDate <='2015/12/31' 
	AND S.ServiceItem = 0
 GROUP BY
 S.Code,
 S.Description_1,
 S.Description_2,
 S.ItemGroup,
 G.StGroup,
 G.Description
 Order by  S.Code



Stock valuation - incl avg cost and by WH



Select
 ItemCode =S.Code,
 ItemDescription1 =S.Description_1,
 ItemDescription2 =S.Description_2,
 ItemGroupCode =G.StGroup,
 ItemGroupDesc = G.Description,
 W.Code as WHCode,
 Qty =
  SUM(CASE 
  WHEN Debit > 0 THEN Quantity
  ELSE -Quantity 
 END)
 --,StockValue =SUM( ROUND(Debit,2)-ROUND(Credit,2))
 ,SV = SUM(CASE
		WHEN P.Id NOT IN ('OInv', 'Crn') THEN ROUND(P.Debit,2)-ROUND(P.Credit,2)
		WHEN Debit > 0 AND P.Id IN ('OInv', 'Crn') THEN P.Quantity*P.Cost
		WHEN Credit > 0 AND P.Id IN ('OInv', 'Crn') THEN -P.Quantity*P.Cost
		ELSE 0 END)
 , SVAvgCost = CASE WHEN SUM(CASE  WHEN Debit > 0 THEN Quantity ELSE -Quantity  END) <> 0 THEN
	 SUM(CASE
		WHEN P.Id NOT IN ('OInv', 'Crn') THEN ROUND(P.Debit,2)-ROUND(P.Credit,2)
		WHEN Debit > 0 AND P.Id IN ('OInv', 'Crn') THEN P.Quantity*P.Cost
		WHEN Credit > 0 AND P.Id IN ('OInv', 'Crn') THEN -P.Quantity*P.Cost
		ELSE 0 END) / 
		 SUM(CASE  WHEN Debit > 0 THEN Quantity ELSE -Quantity  END)
		ELSE 0 END
 , WS.fAverageCost as WHAvgCost

 from PostST P
 LEFT JOIN StkItem S ON P.AccountLink = S.StockLink
 LEFT JOIN GrpTbl G ON S.ItemGroup = G.StGroup
 LEFT JOIN WhseMst W on WhseLink = P.WarehouseID
 LEFT JOIN WhseStk WS ON P.WarehouseID = WS.WHWhseID AND P.AccountLink = WS.WHStockLink
 WHERE P.TxDate <='2018-12-31' 
	AND S.ServiceItem = 0
	AND S.StockLink = 53
 GROUP BY
 S.Code,
 W.Code,
 S.Description_1,
 WS.fAverageCost,
 S.Description_2,
 S.ItemGroup,
 G.StGroup,
 G.Description
 Order by  S.Code