많은 비슷한 질문을 읽었지만 특별한 경우는 내가 찾은 대부분의 다른 상황보다 조금 간단하고 복잡한 것입니다. 질문은 다음과 같습니다.SQL의 휴일 전후의 "영업일"
클럭 인 및 클로우 아웃 사용자에 대한 날짜/시간 스탬프가있는 노동 거래 테이블이 있습니다. 각 트랜잭션 (행)에는 사용자 이름, 시작 및 종료 시간, 총 시간 수 및 "태그"(일반적으로 작업 주문 번호)가 있습니다.
공휴일의 경우 시작 또는 종료 시간이없는 총 사용자 수에 대해 8 시간을 합계 시간으로, "휴가"를 태그로 추가합니다. 아래 표의 샘플을 작성했습니다.
USER | STARTDATE | STARTTIME | STOPDATE | STOPTIME | HOURS | TAG
JSMITH | 7/2/12 | 9:00AM | 7/2/12 | 5:00PM | 8 | WO12345
JSMITH | 7/3/12 | 9:00AM | 7/3/12 | 5:00PM | 8 | WO13579
JSMITH | 7/4/12 | NULL | 7/4/12 | NULL | 8 | HOLIDAY
JSMITH | 7/5/12 | 9:00AM | 7/5/12 | 5:00PM | 8 | WO24680
JSMITH | 7/6/12 | 9:00AM | 7/6/12 | 5:00PM | 8 | WO98765
여기에 문제가 있습니다. 핵심 단어 인 BUSINESS 일보다 2 영업일 앞선 경우에만 8 시간의 휴가를 제공해야합니다. 휴일 (VACATION이라는 태그가 있음)은 "근무 중"으로 간주됩니다. 그래서 기본적으로 2 일 전에 각각의 노동 거래가 있다면 휴가 자격이됩니다.
월요일부터 금요일까지는 월요일부터 금요일까지 일하는 것이 일반적이지만, 필수 사항은 아니지만 토요일에 일할 수있는 사람들이 많기 때문에 월요일이 휴일 인 경우에도 목요일/금 또는 금/토 휴일에 대한 자격.
이 보고서는 일주일에 한 번 (월요일에) 실행되고 이전 주를 볼 것입니다. 따라서 내 생각으로는 Holiday의 태그가있는 거래를 찾는다는 것입니다. 하루 중 어떤 거래보다 먼저 "영업일 기준 2 일"전에 확인하십시오. 한 일 또는 두 일 동안 거래가 발견되지 않으면 사용자 또는 전체 휴일 행을 반환하여 자격이 없음을 나타냅니다 (최종 결과 집합은 거래 목록 또는 휴가 자격이없는 사용자 여야 함).
2 일 전 확인 또는 "업무 일"(토요일 포함) 결정에 도움이되는 모든 도움을 주시면 대단히 감사하겠습니다! 또한 세부 정보가 필요한 경우 알려 주시기 바랍니다.
감사합니다.
그래서 자체에 테이블을 조인하고, 단지'DATEPART (평일, STARTDATE를)'쿼리? – Kermit
목요일, 토요일에 근무하는 사람은 월 휴가 자격이 있습니까? – dbenham
@dbenham - 목/토가 유효하지 않습니다. 목/금 또는 금/토 전용. 금요일은 토요일이 아닙니다. 화요일에 휴일 인 경우, 유효한 경우는 금/월 또는 토/월 –