首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询在办公室中查找/退出时间

SQL查询在办公室中查找/退出时间
EN

Stack Overflow用户
提问于 2013-02-27 06:55:19
回答 3查看 5.3K关注 0票数 1

这对数据库人员来说可能是个愚蠢的问题,但对我来说,这是非常困难的,因为这是我第一次看到数据库,我不是数据库的人,但我必须这样做。

我在SQL SERVER 2005中有数据库,并且有一个视图包含与office中的雇员入/出相关的数据。

在某一特定日期,一天可能有两个以上的条目,但我们认为,一天中的第一个条目是在办公室的时间,最后一个条目是办公室的结束时间,在这些员工之间,这些员工可以在任何时间内外出,但我们只考虑一天中的第一次和最后一次。

所以我得为这个写个查询。

编辑:

图中的颜色列表中也有其他颜色,但我不认为有必要在这里描述。

  • CardSrNo
  • LastName
  • FirstName
  • MidleName
  • PersonalID
  • 日期
  • 时间
  • 英德
  • HMS
  • CardNumber
  • 部门
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-01 05:17:18

现在我使用这个查询:

代码语言:javascript
复制
SELECT FirstName,LastName,CardNumber,Department, Date , MIN(Time) AS intime , MAX(Time) AS outtime ,
convert(varchar(8),(convert(datetime,MAX(Time),110) - convert(datetime,MIN(Time),110)),108) AS Duration
FROM CARDENTRYEXITTRANSACTIONVIEW
GROUP BY FirstName, Date,LastName,CardNumber,Department

并给出完美的结果.

票数 0
EN

Stack Overflow用户

发布于 2013-02-27 06:59:30

试试好的ol‘

代码语言:javascript
复制
Select employeeID, Date,
    MIN(Time) as InTime, 
    MAX(Time) as OutTime
FROM Transactions
GROUP BY employeeID, Date
票数 1
EN

Stack Overflow用户

发布于 2013-02-27 07:39:13

您可以使用编号()排名函数来确定第一次和最后一次输入。

代码语言:javascript
复制
  ;WITH cte AS
 (                             
  SELECT *, ROW_NUMBER() OVER(PARTITION BY PersonalID ORDER BY [Date] ASC, [Time] ASC) AS rnASC,
            ROW_NUMBER() OVER(PARTITION BY PersonalID ORDER BY [Date] DESC, [Time] DESC) AS rnDESC
  FROM dbo.your_tableName
  )
  SELECT *
  FROM cte
  WHERE rnASC = 1 OR rnDESC = 1

SQLFiddle上的简单示例

或与存在性运算符一起使用选项

代码语言:javascript
复制
SELECT *
FROM dbo.your_tableName t1
WHERE EXISTS (
              SELECT 1
              FROM dbo.your_tableName t2
              WHERE t1.PersonalID = t2.PersonalID
              HAVING (t1.[Date] = MAX(t2.[Date]) AND t1.[Time] = MAX(t2.[Time]))
                OR (t1.[Date] = MIN(t2.[Date]) AND t1.[Time] = MIN(t2.[Time]))
              )

SQLFiddle上的简单示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15105954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档