2016-12-15 3 views
0

Как получить 8-й рабочий день, начните проверку, чтобы узнать, существуют ли данные. Если она существует набор и составляет более 50% кредитов - Установите Подтверждено Дата в этот деньРасчет каждый месяц 8-й рабочий день

Спасибо С уважением Shehroz

+1

Выборочные данные, желаемый результат, то, что вы пробовали youtrself? –

+1

Как получить 8-й рабочий день текущего месяца на сервере sql, как –

+0

Найти первый рабочий день ... http: //stackoverflow.com/a/27110176/6167855 ... затем выяснить, какой день недели, который с помощью 'DATEPART (dw, yourDate)' затем добавьте соответствующее количество дней, используя 'DATEADD()', чтобы обеспечить учет для выходных. – scsimon

ответ

1
Declare @D date = '2012-12-01' -- Supply 1st of Month 

Select D=max(D) 
From (
     Select Top 8 D=DateAdd(DD,N,@D) 
     From (Select N From (Values(0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13)) N(N)) A 
     Where DatePart(DW,DateAdd(DD,N,@D)) between 2 and 6 
     ) A 

Возвращает

2012-12-12 
0

Это даст вам результат, однако Мои списки ответить на все 8-го рабочего дня от Конкретная дата.

Он не рассматривает праздники, хотя. С небольшими изменениями вы также можете рассмотреть праздники.

Вы можете использовать top 1 последние select, чтобы получить только одну дату.

DECLARE @start date 
SELECT @start = '20160101' 

;WITH n AS (
    SELECT n = ROW_NUMBER() OVER (ORDER BY [object_id]) 
    FROM sys.all_objects 
), dates AS (
    SELECT DATEADD(DAY, n - 1, @start) Dt 
    FROM n 
), dayNum AS (
    SELECT Dt, DATENAME(WEEKDAY, Dt) WeekDayName 
      , ROW_NUMBER() OVER (ORDER BY Dt) DayNumber 
    FROM dates 
    WHERE DATENAME(WEEKDAY, Dt) NOT IN ('Saturday', 'Sunday') 
) 
SELECT Dt, DATENAME(WEEKDAY, Dt) WeekDayName 
FROM dayNum 
WHERE DayNumber % 8 = 0 
ORDER BY Dt 
Смежные вопросы