日期 时间 员工
20070521 0906 朱文启
20070521 2209 朱文启
20070523 0909 朱文启
20070523 2023 朱文启
20070524 0506 朱文启 要计算员工的工作时间
采取的方法是取同一员工同一天最小的工作时间和最大的工作时间的差,很不幸的是有的员工加班超过了凌晨,这就导致了根本性的错误了。各位老大有没有解决类似问题的经验啊,赐教!
20070521 0906 朱文启
20070521 2209 朱文启
20070523 0909 朱文启
20070523 2023 朱文启
20070524 0506 朱文启 要计算员工的工作时间
采取的方法是取同一员工同一天最小的工作时间和最大的工作时间的差,很不幸的是有的员工加班超过了凌晨,这就导致了根本性的错误了。各位老大有没有解决类似问题的经验啊,赐教!
drop table #tempcreate table #temp(
name varchar(32),
r_date varchar(8),
b_time varchar(4),
e_time varchar(4)
)declare @r_date varchar(8)
declare @r_time varchar(4)
declare @name varchar(32)
declare @rowcount int
declare @b_date varchar(8)
declare @e_date varchar(8)
declare @overtimelimit varchar(4)select top 1 @overtimelimit=overtimelimit,@b_date=bdate,@e_date=edate from config order by id desc
declare view_d cursor for
select r_date,r_time,name from Receive_Data where r_date between @b_date and @e_date order by name ,r_date,r_timeopen view_dfetch next from view_d
into @r_date, @r_time, @name
WHILE @@FETCH_STATUS = 0
begin
if @r_time>@overtimelimit
begin
select @rowcount = count(1) from #temp where name=@name and r_date = @r_date
if @rowcount=0
insert #temp values (@name,@r_date,@r_time,@r_time)
else
update #temp set e_time = @r_time where name=@name and r_date = @r_date
end
else
update #temp set e_time = @r_time where name=@name and r_date = @r_date-1
fetch next from view_d
into @r_date, @r_time, @name
end
CLOSE view_d
DEALLOCATE view_d
select * from #temp