Поскольку я считаю, что вы написали небольшую ошибку в своем вопросе:
Вторым примером будет 2020-01-13, поэтому вычисленная дата должна будет вернуться 2010-04-6
Вы хотели написать:
Вторым примером будет 2020-01-13, поэтому вычисленная дата должна будет вернуть 2020-04-6
Вот как вы можете это сделать:
SELECT Date_c
, case when Date_c >= DATEADD(DAY, (9 - DATEPART(dw,CONVERT(date,concat(year(Date_c), '-04-01')))), CONVERT(date,concat(year(Date_c), '-04-01')))
then DATEADD(DAY, (9 - DATEPART(dw,CONVERT(date,concat(year(Date_c)+1, '-04-01')))), CONVERT(date,concat(year(Date_c)+1, '-04-01')))
else DATEADD(DAY, (9 - DATEPART(dw,CONVERT(date,concat(year(Date_c), '-04-01')))), CONVERT(date,concat(year(Date_c), '-04-01')))
end as NEXTMONDAY
from testT
where Date_c > '2003-03-31';
Вот это DEMO