Try this as well
CREATE TABLE #INStock (WareHouse NVARCHAR(50), ItemCode NVARCHAR(50),Qty INT)
CREATE TABLE #OUTStock ( WareHouse NVARCHAR(50),ItemCode NVARCHAR(50),Qty INT)
INSERT INTO #INSTOCK (WAREHOUSE,ITEMCODE,QTY)VALUES ('1','0001',5)
INSERT INTO #INSTOCK (WAREHOUSE,ITEMCODE,QTY)VALUES ('1','5555',4)
INSERT INTO #INSTOCK (WAREHOUSE,ITEMCODE,QTY)VALUES ('2','0001',6)
INSERT INTO #INSTOCK (WAREHOUSE,ITEMCODE,QTY)VALUES ('3','0001',2)
INSERT INTO #INSTOCK (WAREHOUSE,ITEMCODE,QTY)VALUES ('3','0004',2)
INSERT INTO #OUTStock (WAREHOUSE,ITEMCODE,QTY)VALUES ('1','0001',3)
INSERT INTO #OUTStock (WAREHOUSE,ITEMCODE,QTY)VALUES ('1','5555',2)
INSERT INTO #OUTStock (WAREHOUSE,ITEMCODE,QTY)VALUES ('2','0001',3)
INSERT INTO #OUTStock (WAREHOUSE,ITEMCODE,QTY)VALUES ('2','4444',1)
SELECT
(INStock.WareHouse) AS WH,INStock.ItemCode
,
SUM(ISNULL(INStock.Qty,0)) AS INQty,
SUM(ISNULL(OUTStock.Qty,0)) AS OUTQty ,
SUM(ISNULL(INStock.Qty,0)) - SUM(ISNULL(OUTStock.Qty,0)) as Stock
FROM #INStock INStock LEFT JOIN
#OUTStock OUTStock
ON INStock.ItemCode = OUTStock.ItemCode
AND INStock.WareHouse = OUTStock.WareHouse
group by INStock.WareHouse,INStock.ItemCode
Having INStock.ItemCode='0001'
order by INStock.WareHouse
drop table #INStock
drop table #OUTStock