Select command returning different column values
The query you wrote is basically asking the database to give you any two rows of data (any two orders). If you wrote the query with an ORDER BY clause then your results should be the same each time. 

SELECT TOP 2 OrderID FROM Sales.Orders ORDER BY OrderID ASC;


This would give you the two rows with the lowest OrderID and you will still get the same two rows even when you add other fields to the SELECT list. 

You might be thinking that TOP means that the database will give you the first two, but it actually means that it should stop returning rows after it has returned two rows. And since you didn't have an ORDER BY it could just return whichever two rows are most convenient.