首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为每个日期单独打卡和打卡

为每个日期单独打卡和打卡
EN

Stack Overflow用户
提问于 2020-05-26 16:16:46
回答 1查看 55关注 0票数 0

我有一个简单的表格,记录人们的打卡和打卡,就像这样。

代码语言:javascript
复制
Id     | EmployeeNumber | InOutDateTime
-----------------------------------------------------
1      | 505            | 2020-03-24 08:32:42:000
2      | 506            | 2020-03-24 08:35:47:000
3      | 507            | 2020-03-24 08:46:12:000
4      | 505            | 2020-03-24 16:59:00:000
5      | 506            | 2020-03-24 17:05:00:000
6      | 508            | 2020-03-24 17:46:12:000

我想把每个日期的签到和签退分开。

因此,基于上面的表,我希望获得以下结果:

代码语言:javascript
复制
EmployeeNumber | InDateTime               | OutDateTime
----------------------------------------------------------------------
505            | 2020-03-24 08:32:42:000  | 2020-03-24 16:59:00:000
506            | 2020-03-24 08:35:47:000  | 2020-03-24 17:05:00:000
507            | 2020-03-24 08:46:12:000  | null
508            | null                     | 2020-03-24 17:46:12:000

我一直在玩子查询和分组,但没有得到它。有人能帮上忙吗?

EN

回答 1

Stack Overflow用户

发布于 2020-05-26 16:56:13

一种可能的解决方案是以下语句,但重要的问题是,对于单个EmployeeNumber输入,如何确定InOutDateTimeIn还是Out

表:

代码语言:javascript
复制
CREATE TABLE Data (
   Id int,
   EmployeeNumber int,
   InOutDateTime datetime
)
INSERT INTO Data (Id, EmployeeNumber, InOutDateTime)
VALUES
   (1, 505, '2020-03-24T08:32:42'),
   (2, 506, '2020-03-24T08:35:47'),
   (3, 507, '2020-03-24T08:46:12'),
   (4, 505, '2020-03-24T16:59:00'),
   (5, 506, '2020-03-24T17:05:00'),
   (6, 508, '2020-03-24T17:46:12')

声明:

代码语言:javascript
复制
SELECT 
   EmployeeNumber, 
   MIN(CASE WHEN DATEPART(hour, InOutDateTime) <= 12 THEN InOutDateTime END) AS InDateTime,
   MAX(CASE WHEN DATEPART(hour, InOutDateTime) > 12 THEN InOutDateTime END) AS OutDateTime
FROM Data
GROUP BY EmployeeNumber, CONVERT(date, InOutDateTime)
ORDER BY EmployeeNumber, CONVERT(date, InOutDateTime)

结果:

代码语言:javascript
复制
EmployeeNumber  InDateTime              OutDateTime
505             2020-03-24 08:32:42.000 2020-03-24 16:59:00.000
506             2020-03-24 08:35:47.000 2020-03-24 17:05:00.000
507             2020-03-24 08:46:12.000 
508                                     2020-03-24 17:46:12.000
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62017514

复制
相关文章

相似问题

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