表如下例
姓名 日期 工时
A 04/01/01 5
A 04/01/02 8
A 04/01/03 6
A 04/01/04 8
A 04/01/05 8
A 04/01/06 0
A 04/01/07 8
................
B 04/01/01 8
...............
B 04/01/31 8
.................
...全文
1997打赏收藏
考勤表查询
有一个表存放员工的出勤记录 要查询出所有连续上班超过7天的员工 一句SQL 语句怎么写啊 表如下例 姓名 日期 工时 A 04/01/01 5 A 04/01/02 8 A 04/01/03 6 A 04/01/04 8 A 04/01/05 8 A 04/01/06 0 A 04/01/07 8 ................ B 04/01/01 8 ............... B 04/01/31 8 .................
create table 表(
姓名 char(2),
日期 datetime,
工时 int
)
insert 表 select 'A','04/01/01',5
union
select 'A','04/01/02',8
union
select 'A','04/01/03',6
union
select 'A','04/01/04',8
union
select 'A','04/01/05',8
union
select 'A','04/01/06',0
union
select 'A','04/01/07',8
union
select 'B','04/01/01',8
union
select 'B','04/01/03',8
declare @flag int
set @flag=0
--增加flag字段,记录连续上班的天数
select *,@flag as flag into #t from 表 order by 姓名,日期,工时
declare @date datetime,@m int
set @m=0
set @date=dateadd(dd,1,getdate())
--写入连续上班天数
update #t set
@m=flag=case when 日期=dateadd(dd,1,@date) then @m+1 else 0 end,
@date=日期
--查看临时表内容
select * from #t
--查出连续工作大于或等于7天的员工
--select distinct 姓名 from #t where flag=6
drop table 表
drop table #t
--执行结果
/*
姓名 日期 工时 flag
---- ------------------------------------------------------ ----------- -----------
A 2004-01-01 00:00:00.000 5 0
A 2004-01-02 00:00:00.000 8 1
A 2004-01-03 00:00:00.000 6 2
A 2004-01-04 00:00:00.000 8 3
A 2004-01-05 00:00:00.000 8 4
A 2004-01-06 00:00:00.000 0 5
A 2004-01-07 00:00:00.000 8 6
B 2004-01-01 00:00:00.000 8 0
B 2004-01-03 00:00:00.000 8 0