Will repeated, identical expressions get processed again?
SQL Server is usually pretty smart about not computing the same thing multiple times at the same level of scope. So you should only see one compute scalar in either variation.

In fact, even in this more complex case, SQL Server still manages to only require a single compute scalar, and all the costing is the same:

SELECT DISTINCT LEFT(fiscalyear,6) 
FROM dbo.Transactions
  WHERE LEFT(fiscalyear,5) &gt;= '2009'
  OR LEFT(fiscalyear,4)&gt;'2008';


(And it should go without saying that the better approach - if fiscalyear is date/time - is to have a sargable where clause, like WHERE fiscalyear &gt;= '20090101'. If it is a string, then like @ypercube mentions above, you don't need the left expression - WHERE fiscalyear &gt;= '2009' does the same thing.)

But as a generic answer, if you ever have any doubts about this, run the two queries with actual execution plan turned on, and see if they're different. However, I will say that the subquery form is often used not to prevent an expression from being evaluated multiple times, but to avoid having to type it multiple times. And even if you haven't typed it multiple times, there are still cases where it can still be evaluated multiple times. So there is no absolute "this method is better than the other one."