我有一个包含字段名称,ID,日期,intime / outtime,datetime的表格。
在此,我需要找到第一个银行时间,最后一个时间以及每个员工的第一个时间和最后一个时间之间的持续时间。
如果雇员被刷进去,那么这是他的第一个银泰。如果他搬出去,那就是他的外出时间。因此,在一天结束时,必须计算他的最终停工时间,然后是第一个时间和最后一个停工时间。
当我采用最短的约会时间时,我获得了第一个时间。但是,如果我花费最多的时间,我会获得可以进/出的当前状态。
虽然,我需要得到最后的时间。
答案 0 :(得分:1)
select name,MAX(convert(char(8),datetimecolumn,108)as outtime,MIN(convert(char(8),datetimecolumn,108) as intime ,
(MAX( convert(char(8),datetimecolumn,108 ) - MIN( convert(char(8),datetimecolumn,108 ) )AS duration from Table
OR
SELECT name,intime/outime
(SELECT MAX([convert(char(8),datetimecolumn,108]) AS outtime FROM ... WHERE ...)
- (SELECT MIN([convert(char(8),datetimecolumn,108]) AS inTime FROM ... WHERE ...)
AS duration from TABLE
答案 1 :(得分:1)
SELECT name, date , MIN(convert(char(8),datetimecolumn,108) AS intime , MAX(convert(char(8),datetimecolumn,108) AS outtime, (outtime -intime) as duration
FROM myTable
GROUP BY name, date
答案 2 :(得分:0)
可能是这样的:
SELECT
name,
date,
FirstInTime = MIN(CASE [intime/outtime] WHEN 1 THEN datetime END),
LastOutTime = MAX(CASE [intime/outtime] WHEN 2 THEN datetime END)
FROM atable
GROUP BY
name,
date
如果第一个事件始终是及时的,那么FirstInTime
列可以简单地定义为
…
FirstInTime = MIN(datetime),
…