근무 시간에 직원이 근무한 시간과 근무 시간을 확인하고 싶습니다. 다음은 두 테이블을 비교하여 불일치하는 타임 스탬프를 찾으십시오.
는 두 개의 테이블 위에 비교하면사례 # 아래
FromDateTime ToDateTime --------------------------------------------------- 2017-12-11 07:30:00.000 2017-12-11 12:30:00.000 2017-12-11 15:30:00.000 2017-12-11 18:30:00.000
1
(사무실 타이밍 내부) 직원의 출석 시간입니다InTime OutTime
--------------------------------------------------------
2017-12-11 07:30:12.000 2017-12-11 07:34:29.000
2017-12-11 12:45:28.000 2017-12-11 13:04:15.000
2017-12-11 17:55:15.000 2017-12-11 18:04:28.000
직원의 근무 시간입니다 , 근무 시간에 대한 예상 내부 및 외부 타이밍은 다음과 같아야합니다 :
나는 내 질문을 삭제하고 아래 나는이 목적을 위해 쓴 쿼리 희망FromTime ToTime Remarks
-----------------------------------------------------------------------
2017-12-11 07:30:00.000 2017-12-11 07:30:12.000 Outside Office
2017-12-11 07:30:12.000 2017-12-11 07:34:29.000 Inside Office
2017-12-11 07:34:29.000 2017-12-11 12:45:28.000 Outside Office
2017-12-11 12:45:28.000 2017-12-11 13:04:15.000 Inside Office
2017-12-11 15:30:00.000 2017-12-11 17:55:15.000 Outside Office
2017-12-11 17:55:15.000 2017-12-11 18:04:28.000 Inside Office
2017-12-11 18:04:28.000 NULL Outside Office
:로
FromTime ToTime Remarks
-----------------------------------------------------------------------
2017-12-11 07:30:12.000 2017-12-11 07:34:29.000 Inside Office
2017-12-11 07:34:29.000 2017-12-11 12:30:00.000 Outside Office
2017-12-11 12:45:28.000 2017-12-11 13:04:15.000 Inside Office
2017-12-11 15:30:00.000 2017-12-11 17:55:15.000 Outside Office
2017-12-11 17:55:15.000 2017-12-11 18:04:28.000 Inside Office
2017-12-11 18:04:28.000 2017-12-11 18:30:00.000 Outside Office
하지만 무엇입니까 결과
DECLARE @EmployeeDutyHours TABLE
(
FromDateTime DATETIME,
ToDateTime DATETIME
)
DECLARE @EmployeeAttendanceHours TABLE
(
InTime DATETIME,
OutTime DATETIME
)
INSERT INTO @EmployeeDutyHours
VALUES ('2017-11-29 07:30:00.000', '2017-11-29 12:30:00.000'),
('2017-11-29 13:30:00.000', '2017-11-29 16:30:00.000')
INSERT INTO @EmployeeAttendanceHours
VALUES ('2017-11-29 07:27:24.000', '2017-11-29 09:44:33.000'),
('2017-11-29 11:57:37.000', '2017-11-29 12:05:39.000'),
('2017-11-29 15:12:31.000', '2017-11-29 17:24:32.000')
SELECT
FromTime = eah.InTime,
ToTime = eah.OutTime,
Message = 'Inside Office'
FROM @EmployeeAttendanceHours eah
UNION
SELECT
FromTime = eah.OutTime,
ToTime = eh.ToDateTime,
Message = 'Outside Office'
FROM @EmployeeDutyHours eh,@EmployeeAttendanceHours eah
WHERE eah.OutTime BETWEEN eh.FromDateTime AND eh.ToDateTime
UNION
SELECT
FromTime = eh.FromDateTime,
ToTime = eah.InTime,
Message = 'Outside Office'
FROM @EmployeeDutyHours eh, @EmployeeAttendanceHours eah
WHERE eah.InTime BETWEEN eh.FromDateTime AND eh.ToDateTime
ORDER BY 1, 2
나는 D 얻을해야합니까 예상 된 결과는 무엇입니까?
**
편집
**
Below 대답은 위의 경우를 위해 노력하고 아래의 경우에 작동하지 않습니다. 다음은
은 직원의 근무 시간입니다CASE # 2
다음FromDateTime ToDateTime
---------------------------------------------------
2017-11-29 07:30:00.000 2017-11-29 12:30:00.000
2017-11-29 13:30:00.000 2017-11-29 16:30:00.000
은 (사무실 타이밍 내부) 직원의 출석 시간
InTime OutTime
--------------------------------------------------------
2017-11-29 07:27:24.000 2017-11-29 09:44:33.000
2017-11-29 11:57:37.000 2017-11-29 12:05:39.000
2017-11-29 15:12:31.000 2017-11-29 17:24:32.000
내부을 예상 근무 시간에 대한 외부 시간은 다음과 같아야합니다 :
FromTime ToTime Remarks
-----------------------------------------------------------------------
2017-11-29 07:27:24.000 2017-11-29 09:44:33.000 Inside Office
2017-11-29 09:44:33.000 2017-11-29 11:57:37.000 Outside Office
2017-11-29 11:57:37.000 2017-11-29 12:05:39.000 Inside Office
2017-11-29 12:05:39.000 2017-11-29 12:30:00.000 Outside Office
2017-11-29 13:30:00.000 2017-11-29 15:12:31.000 Outside Office
2017-11-29 15:12:31.000 2017-11-29 17:24:32.000 Inside Office
하지만 this 대답 적용한 후 결과를 얻고있다 :
FromTime ToTime Remarks
-----------------------------------------------------------------------
2017-11-29 07:27:24.000 2017-11-29 09:44:33.000 Inside Office
2017-11-29 07:30:00.000 2017-11-29 11:57:37.000 Outside Office
2017-11-29 09:44:33.000 2017-11-29 12:30:00.000 Outside Office
2017-11-29 11:57:37.000 2017-11-29 12:05:39.000 Inside Office
2017-11-29 12:05:39.000 2017-11-29 12:30:00.000 Outside Office
2017-11-29 13:30:00.000 2017-11-29 15:12:31.000 Outside Office
2017-11-29 15:12:31.000 2017-11-29 17:24:32.000 Inside Office
왜 FromTime 2017-12-11 07 : 34 : 29.000 ToTime 2017-12-11 12 : 30 : 00.000이 (가) 외부에 있습니까? 그것은 직원 시간 맞지? – Wocugon
'(FromTime, ToTime)'='(2017-12-11 12 : 45 : 28.000, 2017-12-11 13 : 04 : 15.000)'이 예상 결과에 나열되는 이유는 무엇입니까? 이 기간은 직원 근무 시간을 벗어났습니다. 그렇죠? –
@GiorgosBetsos가 맞습니다. 그러나 그가 내무부에있을 때 그의 모든 타이밍을 생각했습니다. –