2017-04-20 48 views
0

除く最終ビジネスデータを取得しますか?SQL Serverの私は、週末を除いた最終営業日を取得するには、このクエリを使用して休日や週末

------------------------- 
|Holiday_Date   | 
|-----------------------| 
|2017-04-14 00:00:00.000| 
|2017-05-01 00:00:00.000| 
|2017-10-18 00:00:00.000| 
|2017-12-25 00:00:00.000| 
------------------------- 

:休日は日曜日に当たるときは、月曜日はオフとみなされることを考慮する必要はありません

私は、サンプルデータを使用してこの tbl_Holidaysテーブルを持っています。もう一度、それを考慮する必要はありません。

ありがとうございます。

+0

あなたはあなたの前の質問http://stackoverflow.com/questions/43492452/sql-に私の答えを試みることができますサーバーの使い方の差異を除いた週末および休日 – TriV

答えて

1

私はこれを行うにはループが必要だと思います。

土曜日と日曜日を除いた後、日付が休日テーブルにあるかどうかを確認する必要があります。再度、休日表を除いて計算された日付が日曜日と土曜日であることを確認する必要があります。

DECLARE @last_wrk_day DATETIME 
    ,@today DATETIME 
DECLARE @TblHoliday AS TABLE (Holiday_Date DATE) 

INSERT INTO @TblHoliday 
VALUES ('2017-04-14 00:00:00.000') 
    ,('2017-05-01 00:00:00.000') 
    ,('2017-10-18 00:00:00.000') 
    ,('2017-12-25 00:00:00.000') 
    ,('2017-04-13 00:00:00.000') 

SET @today = '2017-04-10 00:00:00.000' --getdate() 
SET @last_wrk_day = dateadd(day, - 1, @today) 

WHILE (
     (
      SELECT TOP 1 1 
      FROM @TblHoliday 
      WHERE Holiday_Date = @last_wrk_day 
      ) = 1 
     OR DATEPART(dw, @last_wrk_day) IN (1, 7) 
     ) 
BEGIN 
    SET @last_wrk_day = dateadd(day, - 1, @last_wrk_day) 
END 

SELECT @last_wrk_day 

OUTPUT

2017年4月13日00:00:00.000

+0

ありがとうございます。できます :) – theo

関連する問題