근무 시간과 리소스가 포함 된 테이블이 있습니다. 예를 들어 한 사람은 월요일부터 금요일까지 일할 수 있지만 다른 한 사람은 그 주간에 2 일만 근무할 수 있습니다. 여기 데이터입니다 : (. 서식하지만 스크린 샷은 늘 우리의 빌어 먹을 프록시를 통해 업로드의 부족에 대한 사과)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)
이 나에게 정확한 양을 제공합니다 평일의 달 중
이 당신의 수를 할 수있는 일단. "Resource ID", "DayOfWeek", "Works"(Works는 부울 0/1 필드이고 "DayofWeek"는 요일을 나타내는 숫자입니다.) 기본 키는 다음과 같습니다. Resource ID와 Day of Week의 조합을 사용하면이 데이터와 관련된 유용한 쿼리를 작성하는 것이 훨씬 쉬워 질 것입니다. 또한 작업의 변경 사항을 이해할 수 있도록 시작일/종료일과 같은 다른 항목으로 수정해야 할 수도 있습니다. 패턴은 시간이 지남에 따라 달라질 수 있습니다. 현재 가지고있는 것은 유연성이 부족하여 필요한 정보를 쉽게 얻을 수있는 것은 아닙니다. – ADyson
첫 번째 테이블에서 중요한 정보 인 누락 된 리소스 ID와 주간 시작 또는 종료 날짜가있는 것처럼 보입니다. – Greenspark
올바른 테이블 구조를 게시하십시오. – Amit