如何根据SQL中的时间进行状态检查/签出?

时间:2017-03-18 04:49:07

标签: mysql sql sql-server time

我有SQL的这个问题,如下图所示。有没有办法解决这个问题?

Image and Description

2 个答案:

答案 0 :(得分:0)

Declare @table table (rowno int identity (1,1),id varchar(10),[time] time)
insert into @table
select '01','10:08:23'
union all
select '02','10:10:50'
union all
select '01','13:30:00'

;with cte as
(
select *,row_number()over(partition by id order by id)n from @table
)select id,time,case when n=1 then 'checkin' else 'checkout'end status from cte order by rowno

答案 1 :(得分:0)

使用ROW_NUMBER概念:

SELECT id , time , CASE WHEN MIN(RNo) = 1 THEN  'CheckIn' WHEN MAX(RNo) > 1     
THEN  'CheckOut' END
FROM 
(
  SELECT * , ROW_NUMBER() OVER (PARTITION BY id ORDER BY time) RNo 
  FROM @table
) A 
GROUP BY id , time