The OP's query will return multiple rows in the case of ties for min(Number) Some of the answers given so far will only return one row.
To use TOP and ORDER BY, WITH TIES needs to be included:
select top 1 with ties id, number
from TableA
order by Number
And if using the CTE or inline-view with a windowed function, RANK() instead of ROW_NUMBER() needs to be used:
; with CTE (R, ID, Number) as
(select rank() over (order by Number)
, ID, Number
from TableA)
select ID, Number
from CTE
where R = 1
Also, please benchmark before replacing your query with one of the above. For a very small table that I used to test with, the query in the OP costed out at less than half either the TOP WITH TIES or the RANK() versions listed in this answer.