Если я вас правильно понял, вам необходимо указать дату, в которой сообщается, как наступающий понедельник, в случае, если данные получены и время после 16:00, или SYS_Created_On
- это суббота или воскресенье вам нужно чтобы получить дату, соответствующую понедельнику
Хотя есть разные способы, которые более элегантны (в том смысле, что меньший код), следующий более наглядный:
CASE
WHEN CAST([SYS_Created_On] as time) >= CAST('16:00' as time) and DATENAME(WEEKDAY,CAST([SYS_Created_On] AS DATE)) = 'Friday'
THEN DATEADD(dd, 3, CAST([SYS_Created_On] AS DATE))
WHEN DATENAME(WEEKDAY,CAST([SYS_Created_On] AS DATE)) = 'Saturday'
THEN DATEADD(dd, 2, CAST([SYS_Created_On] AS DATE))
WHEN DATENAME(WEEKDAY,CAST([SYS_Created_On] AS DATE)) = 'Sunday'
THEN DATEADD(dd, 1, CAST([SYS_Created_On] AS DATE))
WHEN CAST([SYS_Created_On] as time) >= CAST('16:00' as time)
THEN DATEADD(dd, 1, CAST([SYS_Created_On] AS DATE))
ELSE CAST([SYS_Created_On] AS DATE)
END AS [Reported Date],