• The natural thing to do is calculate the age in years in a cte, then calculate teh age in months for cases where the age in years is 0. That's pretty straight forward:

    with years(person,dob,age_y) as

    (select person,

    dob,

    DATEDIFF(YEAR, dob, @SDate) -

    CASE WHEN((MONTH(dob)*100 + DAY(dob)) > (MONTH(@SDate)*100 + DAY(@SDate)))

    THEN 1

    ELSE 0

    END as age_y

    FROM @people)

    select person, dob,

    case when age_y > 0

    then LTRIM(STR(age_y)) + ' Yrs'

    else LTRIM(STR(DATEDIFF(MM,dob,@SDate) -

    case when DATEPART(DD,dob)>DATEPART(DD,@SDATE) then 1 else 0

    end)) + ' Mths'

    end as age

    from years

    Tom