私はすべての非営業日と翌営業日のテーブルを生成する必要があります。数年の翌営業日の計算
与えられたもの: 特定の都市の週末を格納するテーブル。
CREATE TABLE WeekHolidays
(
CitiesId int
,Cities_Name varchar(50)
,HolidayDate int
)
別のテーブル保持祝日:
SELECT Cities_Id
,Cities_Name
,DATEADD(WEEK,sptv.number,DATEADD(DAY,(((HolidayDate - 1) + 7) %7),DATEADD(week, DATEDIFF(day, 0, getdate())/7, 0))) as HolidayDate
FROM WeekHolidays
CROSS JOIN master..spt_values sptv
WHERE sptv.type = 'P'
UNION
SELECT Cities_Id
,Cities_Name
,HolidayDate
FROM Holidays
:
CREATE TABLE Holidays
(
CitiesId int
,Cities_Name varchar(50)
,HolidayDate datetime
)
は現在、私は次のように祝日を追加する+次の2047週(約40年)のための週末の日を生成しています
しかし、私はこれらの日付ごとにlogikを使って翌営業日を追加する必要があります。この表にない最初の日に(各都市ごとに)先に進む。
Rextesterを再生する:例で
CitiesId Cities_Name HolidayDate NextBusinessDay
3 PARIS 14.07.2017 17.07.2017
3 PARIS 15.07.2017 17.07.2017
3 PARIS 16.07.2017 17.07.2017
3 PARIS 22.07.2017 24.07.2017
3 PARIS 23.07.2017 24.07.2017
3 PARIS 29.07.2017 31.07.2017
3 PARIS 30.07.2017 31.07.2017
3 PARIS 05.08.2017 07.08.2017
3 PARIS 06.08.2017 07.08.2017
3 PARIS 12.08.2017 14.08.2017
3 PARIS 13.08.2017 14.08.2017
3 PARIS 15.08.2017 16.08.2017
3 PARIS 18.08.2017 21.08.2017
3 PARIS 19.08.2017 21.08.2017
3 PARIS 20.08.2017 21.08.2017
3 PARIS 26.08.2017 28.08.2017
3 PARIS 27.08.2017 28.08.2017
: http://rextester.com/OZTT34904
をその結果は次のようでなければならないHolidayDate = 2017年7月14日次BusinessDayは15.07として、2017年7月17日であろう。 & 16.07。 HolidayDate列(土曜日&日曜日はパリの休日)に含まれています。
私はもっと理解できることを願っています。
これを簡単かつ迅速にどのようにアプローチするか考えてみましょうか?
ありがとうございます! ステファン
を見て含むテーブルを作成するには不足している日に
を追加することにより、日付を計算しています。それが休日の場合、それは休日です。あなたが本当に区別する必要がある場合は、単にHolidayTypeなどの列を追加してください。それは少なくともあなたの構造を単純化するはずです。 – ADyson
[これはおそらく時間の節約になります](https://www.mssqltips.com/sqlservertip/4054/creating-a-date-dimension-or-calendar-table-in-sql-server/)平日、休日など...自分の休日のためにアーロンの方法を少し編集できます – scsimon
これらのテーブルはシステムによって与えられます。私は本当にそれが好きではないが、私はそれに対処しなければならない。そのレガシーシステム –