使用SQL Server
表1
ID Actual_Intime Actual_Outtime
001 08:00:00 18:00:00 (HHMMSS)
002 20:00:00 06:00:00
003 05:00:00 14:00:00
004 19:30:00 03:30:00
...
...
Actual_Intime Datatype is nvarchar
Actual_Outtime Datatype is nvarchar
我需要像
那样验证员工时间“如果停机时间小于银泰时间,那么应该在同一天使用时间和停机时间”
“如果停播时间大于时间,那么应该在同一天使用intime,并且应该在第二天停止。
表2
ID Date Time
001 20100102 06:00:00
001 20100102 08:00:00
001 20100102 14:00:00
001 20100102 19:00:00
002 20100102 19:00:00
002 20100102 21:00:00
002 20100103 03:00:00
002 20100103 07:00:00
...,
...
Date Datatype is nvarchar
Time Datetype is nvarchar
Date Format: yyyymmdd
Time Format: HHMMSS
我需要从table2获取Min(时间)和Max(时间),但table2比较table1的实际intime和实际outtime
预期产出
ID Date Intime Outtime
001 20100102 06:00:00 19:00:00
(这里Actual_Outtime小于table1中的Actual_Intime,因此在table2中它应该占用同一天的intime和outtime)
002 20100102 19:00:00 07:00:00
(此处Actual_Outtime大于table1中的Actual_Intime,因此在table2中,它应该将第二天的时间作为停机时间)
如何将Intime和Outtime与实际的Intime和实际的Outtime进行比较。
需要查询帮助
答案 0 :(得分:2)
不确定此处是否确实需要Table1
。据我所知,Table2
包含生成结果表的所有必要信息。
SELECT
ID,
date = CONVERT(char(8), intime, 112),
intime = CONVERT(char(8), intime, 108),
outtime = CONVERT(char(8), outtime, 108)
FROM (
SELECT
ID,
intime = MIN(dt),
outtime = MAX(dt)
FROM (
SELECT
ID,
dt = CAST(Actual_Intime + ' ' + Actual_Outtime AS datetime)
FROM Table2
) s
) m
我在此假设Table1.Actual_Intime
对应MIN(CAST(Table2.Date + ' ' + Table2.Time AS datetime))
,Table1.Actual_Outtime
对应MAX(...)
,这似乎与给出的描述一致。