For various reasons, I need to keep the computation together in a single query (the example uses @vars but the real code is grabbing a gazillion birthdays and computing the age). Anyhow, with a slight rearrangement, your code maps to something like the following:

DECLARE

@birthdt DATETIME,
@targetdt DATETIME

SELECT
@birthdt = '1/15/1930',
@targetdt = '12/31/2000'

SELECT
age = CONVERT(INT, DATEDIFF(yy, @birthdt, @targetdt)) -
(CASE WHEN (MONTH(@birthdt) = MONTH(@targetdt)) AND
(DAY(@birthdt) > DAY(@targetdt))
THEN 1
ELSE 0
END)


I'm still wondering, though, whether there's an easier way to do this?