This seems like a simple solution.declare @JoinDate datetimedeclare @Curdate datetimeset @JoinDate = '20001112'set @Curdate = getdate()select top 1 NextAnniversaryDate = dateadd(yy,datediff(yy,j.JoinDate,c.Curdate)+a.YearOffset,j.JoinDate)from -- Offset for this year and next year ( select YearOffset = 0 union all select YearOffset = 1) a cross join -- Set Curdate to midnight ( select Curdate = dateadd(dd,datediff(dd,0,@Curdate),0) ) c cross join -- Set JoinDate to midnight ( select JoinDate = dateadd(dd,datediff(dd,0,@JoinDate),0) ) jwhere dateadd(yy,datediff(yy,j.JoinDate,c.Curdate)+a.YearOffset,j.JoinDate) >= c.Curdateorder by 1 ascResults:NextAnniversaryDate------------------------2008-11-12 00:00:00.000(1 row(s) affected)
CODO ERGO SUM