Lamak's answer provides the reason for the duplicate rows in the result. Here is one solution:
WITH Sales AS
( ... )
, Forecasts AS
( ...)
, Combos AS -- get all distinct
( -- model + month + country
SELECT Model, Month, Country -- combinations
FROM Sales -- from Sales
UNION -- this is UNION DISTINCT
SELECT Model, Month, Country
FROM Forecasts -- and Forecasts
)
SELECT ID = COALESCE(s.ID, f.ID),
c.Model,
c.Month,
c.Country,
Amount = COALESCE(s.Amount, f.Amount),
[Forecast / Sales] = COALESCE(s.[Forecast / Sales],
f.[Forecast / Sales])
FROM Combos c
LEFT JOIN Sales s
ON s.Model = c.Model
AND s.Month = c.Month
AND s.Country = c.Country
LEFT JOIN Forecasts f
ON s.Model IS NULL -- join Forecasts only if there is no Sales
AND f.Model = c.Model
AND f.Month = c.Month
AND f.Country = c.Country
ORDER BY ID, Month, Country, Model ;
Test at: SQL-Fiddle