【发布时间】:2016-10-04 03:02:55
【问题描述】:
这是我的考勤表检查类型 0 用作 intime 和 1 as out time, 我希望 checktype = 0 的时间为 intime,checktype = 1 的时间为 outtime 根据日期单次输入,所有 empid 订单按 intime 将升序 检查类型 0 和检查类型 1 的降序
我想要下面的类型结果
【问题讨论】:
标签: sql sql-server-2008 sql-server-2008-r2
这是我的考勤表检查类型 0 用作 intime 和 1 as out time, 我希望 checktype = 0 的时间为 intime,checktype = 1 的时间为 outtime 根据日期单次输入,所有 empid 订单按 intime 将升序 检查类型 0 和检查类型 1 的降序
我想要下面的类型结果
【问题讨论】:
标签: sql sql-server-2008 sql-server-2008-r2
这里有一种方法可以为每位员工每天选择最短的上班时间和最长的上班时间:
select min(case when checktype = 0 then time end) min_intime,
max(case when checktype = 1 then time end) max_outtime,
empid,
date
from mytable
group by empid, date
【讨论】:
在这种情况下,我们可以使用 OUTER APPLY 为选择进行不同的设置:
select
min(t.time) inTime,
max(t1.time) outTime,
t.empid,
t.date
from table1 t
outer apply(select time from table1 t1 where t.empid = t1.empid
and t1.checktype = 1) t1
where t.checktype = 0
group by t.empid, t.date
【讨论】: