首页 > 解决方案 > 出勤进出

问题描述

考虑以下表结构和示例数据 -

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)StatusInOutInTimeStatusInOutOUTTIME(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

标签: sql-servertsql

解决方案


用例当

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)

推荐阅读