我們有一張表,其中包含資源以及他們工作的日子。例如,一個人可以在週一到週五工作,但另一個人只能在那周的兩天工作。 這裏是數據:(道歉缺乏格式化但截圖不會通過我們該死的代理上傳)SQL - 從工作日中查找工作日
WorkOnSunday WorkOnMonday WorkOnTuesday WorkOnWednesday WorkOnThursday WorkOnFriday WorkOnSaturday
--------------------------------------------------------------------------------------------------------------
0 1 1 1 1 1 0
0 0 1 1 0 0 0
所以現在的問題是,如何獲取天在工作的量一個月使用上面的數據? (節假日的下一階段,我試圖讓假期表的保持,我們顯然有。)
這裏是我到目前爲止有:
DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME
SET @StartDate = '2017/12/01'
SET @EndDate = '2018/01/01'
SELECT
(DATEDIFF(dd, @StartDate, @EndDate))
-(DATEDIFF(wk, @StartDate, @EndDate) * 2)
-(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)
這給了我正確的金額本月的平日
這可能是與正火做。改爲使用下列字段的子表:「資源ID」,「DayOfWeek」,「Works」(其中Works是布爾0/1字段,「DayofWeek」是表示星期幾的數字。資源ID和星期幾的組合,這樣可以使編寫與此數據有關的有用查詢變得容易很多,您可能還需要用其他方法對其進行優化,例如開始/結束日期,以便您瞭解工作中的變化模式隨着時間的推移你現在得到的東西是不靈活的,不會讓你得到你需要的信息,不容易 – ADyson
看起來你的第一張表中缺少重要的信息 - 特別是資源ID和星期開始或結束日期。您是否也有這些信息? – Greenspark
發佈您正確的表格結構 – Amit