У меня есть таблица календаря с несколькими полями, из которых поля ниже полезны, и я хочу добавить в таблицу новый столбец «Дата обещания» с приведенной ниже логикой.Я борюсь с этим и нуждаюсь в помощи.
Пример: Дата начала = '01 -02-2019 ', а затем добавьте два дня.Результатом должен стать рабочий день.
Имя таблицы: = Таблица дат
Дата начала, IsBillingday = 1 (исключая праздничные и выходные дни), WeekdayFlag = День недели, DayNameOfWeekShort = 'Пн' .... Пятница.
Сначала начал думать просто ...
CASE WHEN DayNameOfWeekShort = 'Mon' AND ISBillingDay = '1' THEN CONVERT (nvarchar(10) , DATEADD(Day , 2 , dbo.DateTable.StartDate) , 23)
WHEN DayNameOfWeekShort = 'Tue' AND ISBillingDay = '1' THEN CONVERT (nvarchar(10) , DATEADD(Day , 2 , dbo.DateTable.StartDate) , 23)
WHEN DayNameOfWeekShort = 'Wed' AND ISBillingDay = '1' THEN CONVERT (nvarchar(10) , DATEADD(Day , 2 , dbo.DateTable.StartDate) , 23)
WHEN DayNameOfWeekShort = 'Thu' AND ISBillingDay = '1' THEN CONVERT (nvarchar(10) , DATEADD(Day , 4 , dbo.DateTable.StartDate) , 23)
WHEN DayNameOfWeekShort = 'Fri' AND ISBillingDay = '1' THEN CONVERT (nvarchar(10) , DATEADD(Day , 5 , dbo.DateTable.StartDate) , 23) ELSE '' END
Но тогда результат в некоторых случаях не рабочий день ... Как перейти на следующий рабочий день?
Для этой строки
CASE WHEN DayNameOfWeekShort = 'Mon' AND ISBillingDay = '1' THEN CONVERT (nvarchar(10) , DATEADD(Day , 2 , dbo.DateTable.StartDate) , 23)
Результат не рабочий день ... Тогда нужно добавить +1 день и проверить, работает ли рабочий день или нет ... Если не добавить + 1 ... Если да .. конецпетля.а