An alternative solution...
;WITH cteJune ([level],[SthdiCode],[FunctionalArea],[Qty])
AS
(
SELECT '01','G22','Area1',5 UNION ALL
SELECT '01','G22','Area2',5 UNION ALL
SELECT '01','G22','Area3',5 UNION ALL
SELECT '02','G22','Area1',5 UNION ALL
SELECT '02','G22','Area2',5 UNION ALL
SELECT '02','G22','Area3',20 UNION ALL
SELECT '02','WWW','Area3',5
),
cteJuly ([level],[SthdiCode],[FunctionalArea],[Qty])
AS
(
SELECT '01','G22','Area1',15 UNION ALL
SELECT '01','G22','Area2',15 UNION ALL
SELECT '01','G22','Area3',15 UNION ALL
SELECT '02','G22','Area1',15 UNION ALL
SELECT '02','G22','Area2',15 UNION ALL
SELECT '02','G22','Area3',15 UNION ALL
SELECT '02','WWW','Area3',5
)
SELECT
r.[level]
,r.SthdiCode
,r.FunctionalArea
,r.QtyJune
,r.QtyJuly
,SUM(r.QtyJuly-r.QtyJune) OVER (PARTITION BY r.[level],r.SthdiCode,r.FunctionalArea) AS [Difference]
FROM
(
SELECT DISTINCT
cteJune.[level]
,cteJune.SthdiCode
,cteJune.FunctionalArea
,cteJune.Qty AS QtyJune
,cteJuly.Qty AS QtyJuly
FROM
cteJune
INNER JOIN
cteJuly
ON cteJune.[level] = cteJuly.[level]
AND cteJune.SthdiCode = cteJuly.SthdiCode
AND cteJune.FunctionalArea = cteJuly.FunctionalArea
) r
levelSthdiCodeFunctionalAreaQtyJuneQtyJulyDifference
01G22Area151510
01G22Area251510
01G22Area351510
02G22Area151510
02G22Area251510
02G22Area32015-5
02WWWArea3550