Use previous state of data
WITH 
cte AS ( SELECT DISTINCT 
                Month, 
                MAX(CASE WHEN [Order] IS NOT NULL 
                         THEN Month 
                         END) OVER (ORDER BY Month 
                                    ROWS BETWEEN UNBOUNDED PRECEDING 
                                             AND 1 PRECEDING) prev
         FROM test )
SELECT Month, [Order], Amount
FROM test
WHERE [Order] IS NOT NULL
UNION ALL
SELECT t1.Month, t2.[Order], t2.Amount
FROM test t1
JOIN cte ON t1.Month = cte.Month
JOIN test t2 ON t2.Month = cte.prev
WHERE t1.[Order] IS NULL
ORDER BY Month, [Order];

fiddle with some explanations