sql-server - 出勤进出
问题描述
考虑以下表结构和示例数据 -
EmpID InputDateTime StatusINOUT
-------------------------------------
1 2018-05-26 08:44 1
1 2018-05-26 08:44 2
2 2018-05-28 08:44 1
2 2018-05-28 12:44 2
1 2018-05-21 08:44 1
1 2018-05-21 10:44 2
2 2018-05-23 08:44 1
2 2018-05-23 08:44 2
现在我想将列分成两列,InputDateTime
即. 这背后的逻辑是 1 的日期将是2 的日期值将是。INTIME(1)
OUTTIME(2)
StatusInOut
InTime
StatusInOut
OUTTIME(2)
预期的输出格式如下所示:
Empid INTIME(1) OUTIME(2)
--------------------------------------------
1 2018-05-26 08:44 2018-05-26 08:44
2 2018-05-28 08:44 2018-05-28 12:44
1 2018-05-21 08:44 2018-05-21 10:44
2 2018-05-23 08:44 2018-05-23 08:44
解决方案
用例当
select empid,max(case when statusINOut=1 then Datetime end) as INtime,
max(case when statusINOut=2 then Datetime end) as Outtime
from table_name t
group by empid,convert(date,Datetime)
推荐阅读
- firebase - Streambuilder 帮助 Flutter Firebase 存储
- java - 角/弹簧靴| 错误:SyntaxError:“JSON.parse:JSON 数据的第 1 行第 1 列出现意外字符”
- linux - 让 apache 只读取一个 php 文件
- google-chrome - 触摸自动在 Chromium 中的文本框上显示上下文菜单
- apache-ftpserver - 我们可以使用 Apache FTP 客户端执行 CPYTOIMPF 命令吗?
- c++ - 组合框第一行不可选择
- c - 当另一个子进程完成时如何终止子进程?
- react-native - branch.getFirstReferringParams() 总是返回空白数组
- python - DDPG算法中actor的梯度计算
- java - 使用java从pdf中提取主要标题