抓取連續上班7天的員工,procedure該怎樣寫呀

[复制链接]
查看11 | 回复4 | 2006-5-5 16:12:24 | 显示全部楼层 |阅读模式
假如我傳入兩個參數2005/08/01和2005/08/31,然後要跟據這兩個參數抓出此時間段內連續上班7天的員工,該怎樣寫呢,
請各位高手提示小弟一下,感激不盡
回复

使用道具 举报

千问 | 2006-5-5 16:12:24 | 显示全部楼层
表结构什么样,分析函数也许有用
回复

使用道具 举报

千问 | 2006-5-5 16:12:24 | 显示全部楼层
楼主你的表是什么样的结构的啊??
如果您的考勤纪录是每天上班都有记录的话那样就方便点了,只要判断在您指定的时间段里员工ID是否连续出现,次数是否大于7就好了
回复

使用道具 举报

千问 | 2006-5-5 16:12:24 | 显示全部楼层
难为无米之炊
回复

使用道具 举报

千问 | 2006-5-5 16:12:24 | 显示全部楼层
思路:
i=0;--记录连续上班天数
lastdate;--记录上次上班日期
thisdate;--记录本次上班日期
定义一个游标(时间排序),循环每个员工的考勤情况,i:=i+1;如果该员工两个工作日之差为1,表示连续上班了,没问题,i 继续往下加;如果两个工作日之差大于1,表示未连续上班,并且 i 1 and i1 and i select * from test;
ID
WORK_DATE
---------- -------------------- -----------
001
2005-8-1
002
2005-8-1
003
2005-8-1
002
2005-8-2
003
2005-8-2
001
2005-8-3
002
2005-8-3
001
2005-8-4
002
2005-8-4
001
2005-8-5
002
2005-8-5
001
2005-8-6
002
2005-8-6
001
2005-8-7
002
2005-8-7
001
2005-8-8
001
2005-8-9
17 rows selected
select id from
(
select id,work_date - row_number() over(partition by id order by work_date) part
from test t
)
group by id,part having count(*) >= 7
SQL>
7/
ID
----------
001
002
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行