출석 요약 보고서

5 타르-카스 터

회사 정책으로 인해 현재 작업중인 실제 쿼리를 제공 할 수 없지만 여기에 고장 및 일반적인 아이디어가 있습니다. 직원이 근무 중인지 여부와 근무하는 장소를 매일 기록하는 출석 기록부가 있습니다. 저는이 날짜와 그 직원이 5 교대로 근무한 날짜 사이에 이것을 요약하려고합니다. 내가 앉아있는 문제는 한 특정 직원이 A 직장에서 2 일 동안 일한 후 B 직장으로 옮겨 졌다는 것입니다. B 직장에서 며칠 후 직원은 다시 A 직장으로 옮겨졌습니다.

나의 시도에 대한 나의 결과는 직원이 1 월 1 일부터 A 직장에서 일하기 시작했고 단 2 교대로 1 월 10 일에 끝났다는 것을 보여 주었다. 작업 장소에 그룹이 있고 시작일과 종료일은 최소 및 최대 선택입니다.

SELECT att.Employee, att.Workplace, dte.BeginDate, dte.EndDate, shf.WorkShift FROM
(SELECT * FROM Attendance WHERE WorkDate BETWEEN '1-Jan' AND '30-Jan') att
CROSS APPLY (SELECT COUNT(Shift) WorkShift FROM Attendance WHERE WorkDate BETWEEN '1-Jan' AND '30-Jan' AND Employee = att.Employee AND WorkPlace = att.WorkPlace AND Shift = 'Worked') shf
CROSS APPLY (SELECT MAX(WorkDate) BeginDate, MIN(WorkDate) EndDate FROM Attendance WHERE WorkDate BETWEEN '1-Jan' AND '30-Jan' AND Employee = att.Employee AND WorkPlace = att.WorkPlace) dte

따라서이 직원 레코드는 다음과 같이 표시되어야합니다 (매우 나쁜 그리드에 대해 죄송합니다. 예쁘게 만드는 방법을 모르겠습니다. 더보기 좋게 편집 할 수 있습니다.)

| Name | Workplace  | beginDate | endDate | WorkShift |
| Jane | WorkPlaceA | 1-Jan     | 2-Jan   | 2         |
| Jane | WorkPlaceB | 3-Jan     | 8-Jan   | 5         |
| Jane | WorkPlaceA | 9-Jan     | 10-Jan  | 2         |

출석 테이블은 다음과 같습니다.

| Name | Workplace  |  Date  | Shift  |
| Jane | WorkplaceA |  1-Jan | Worked |
| Jane | WorkplaceA |  2-Jan | Worked |
| Jane | WorkplaceB |  3-Jan | Worked |
| Jane | WorkplaceB |  4-Jan | Worked |
| Jane | WorkplaceB |  5-Jan | Worked |
| Jane | WorkplaceA |  6-Jan | Absent |
| Jane | WorkplaceA |  7-Jan | Absent |
| Jane | WorkplaceA |  8-Jan | Worked |
| Jane | WorkplaceB |  9-Jan | Worked |
| Jane | WorkplaceB | 10-Jan | Worked |
랜돌프

나는 당신이 CTE를 사용하여 이것을 성취 할 수 있다고 믿는다. 다음은 예상 값을 보여주는 샘플 작업 코드입니다.

;WITH CTE1 AS (
SELECT Employee, WorkPlace, TransactionDate,
    ROW_NUMBER() OVER(PARTITION BY WorkPlace ORDER BY TransactionDate) AS WP,
    ROW_NUMBER() OVER(ORDER BY TransactionDate) AS RN FROM Attendance WHERE Shift = 'Worked'),
    CTE2 AS (SELECT Employee, WorkPlace, TransactionDate, WP, RN, WP-RN AS GB FROM CTE1),
    CTE3 AS (SELECT Employee, WorkPlace, MIN(TransactionDate) AS TransactionDate, COUNT(1) AS Shifts FROM CTE2 GROUP BY Employee, WorkPlace, GB)

SELECT Employee, WorkPlace, TransactionDate AS [Start Date], DATEADD(DAY,Shifts - 1,TransactionDate) AS [End Date], Shifts FROM CTE3 ORDER BY TransactionDate ASC

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SSRS 요약 보고서

분류에서Dev

요약 출력에서 값 추출

분류에서Dev

회귀 요약 출력 : 범주 순서

분류에서Dev

Codeigniter :-월간 요약 보고서 받기

분류에서Dev

대출 출처를 월별로 요약하려고

분류에서Dev

C ++에서 극장 좌석 예약은 어떻게하나요?

분류에서Dev

MongoDB에서 요약 보고서를 얻는 방법

분류에서Dev

SQL Server에서 요약 보고서 만들기

분류에서Dev

요약 점수 테이블에서 설명 보고서 생성

분류에서Dev

scikit-learn을 사용하여 다항 회귀에서 회귀 분석 요약을 출력하는 방법은 무엇입니까?

분류에서Dev

R의 요약 객체에서 df 추출

분류에서Dev

R의 lme4 요약에서 열 추출

분류에서Dev

파이썬의 요약 보고서를 만들려면

분류에서Dev

하위 클러스터 내 개수 요약 보고서

분류에서Dev

그룹 및 분기 SQL 별 요약 보고서 생성

분류에서Dev

액세스 보고서의 결과 요약

분류에서Dev

SQL의 도움으로 요약 보고서

분류에서Dev

jmeter 비 GUI 콘솔 요약 보고서 구성

분류에서Dev

장고 주석 호출이 게으른가요?

분류에서Dev

Pandas를 사용하여 출석 학생 보고서 작성

분류에서Dev

진정한 누출 또는 거짓 분석기 보고서?

분류에서Dev

학생의 월별 출석 보고서를 표시

분류에서Dev

요약 출력 수정

분류에서Dev

요인 분석 (R)에서 출력 편집

분류에서Dev

OLS 회귀 출력 요약을 통해 Python에서 특정 경고를 감지하는 방법

분류에서Dev

요약에서 계수 및 간격 추출에서 행렬 작성

분류에서Dev

XtraReports Devexpress Programmatic에서 총 요약을보고 하시겠습니까?

분류에서Dev

보고서 (또는 요약) 표를 업데이트하는 방법?

분류에서Dev

GIT의 분기 요약 해석

Related 관련 기사

뜨겁다태그

보관