Следующий запрос использует от CROSS APPLY
до UNPIVOT
4 столбца даты, а затем получает один из них, ближайший к текущей дате. TOP 1
- получить только одну строку ie ближайшую дату
select *
from yourtable t
cross apply
(
select top 1 *
from
(
values ([strt date], 'strt date'),
([85th birthday], '85th birthday'),
([10th anniv], '10th anniv'),
([20th anniv], '20th anniv')
) d ([next date], [anniv_type])
where [next date] > getdate()
order by datediff(day, getdate(), [next date])
) n