Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 如何使用sqlquery获取intime和outitme_Sql Server 2005_Sql Server 2008 - Fatal编程技术网

Sql server 2005 如何使用sqlquery获取intime和outitme

Sql server 2005 如何使用sqlquery获取intime和outitme,sql-server-2005,sql-server-2008,Sql Server 2005,Sql Server 2008,我有一个带有字段名称、id、日期、开始/结束时间、日期时间的表 在这里,我需要找到每个员工的第一次上班时间、最后一次下班时间以及第一次上班时间和最后一次下班时间之间的持续时间 如果员工被刷卡,那么这是他的第一次上班时间。如果他搬走了,那就是他的休息时间。因此,在一天结束时,必须计算他最后的休息时间,以及从第一次开始到最后一次休息的持续时间 当我用最少的约会时间时,我得到了第一个时间。但是,如果我最大限度地利用空闲时间,我会得到可以进入/退出的当前状态 但是,我需要最后一次出去 select

我有一个带有字段名称、id、日期、开始/结束时间、日期时间的表

在这里,我需要找到每个员工的第一次上班时间、最后一次下班时间以及第一次上班时间和最后一次下班时间之间的持续时间

如果员工被刷卡,那么这是他的第一次上班时间。如果他搬走了,那就是他的休息时间。因此,在一天结束时,必须计算他最后的休息时间,以及从第一次开始到最后一次休息的持续时间

当我用最少的约会时间时,我得到了第一个时间。但是,如果我最大限度地利用空闲时间,我会得到可以进入/退出的当前状态

但是,我需要最后一次出去

  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


可能是这样的:

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
如果第一个事件始终是in time,那么
FirstInTime
列可以简单地定义为

  …
  FirstInTime = MIN(datetime),
  …

定义持续时间。intime/outtime是两个不同的列还是相同的列?如果相同,那么将时间标识为intime或outtime有什么意义?嗨,这个in/out是一个单独的字段,它显示了我将intime标识为min的状态(convert(char(8),DateTime,108)as intimethis将给出第一次输入时间和最后一次输出时间bu,如果最后一次输入,则显示为out,因此我需要获取该值。您可以正确或简要地指定您想要的内容吗?举个例子,您可以找到答案吗?然后添加您的答案并将其作为答案接受。
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 = MIN(datetime),
  …