当前位置: 代码迷 >> Oracle技术 >> 求一oracle语句解决办法
  详细解决方案

求一oracle语句解决办法

热度:90   发布时间:2016-04-24 08:09:21.0
求一oracle语句
本帖最后由 Freeid_shi 于 2014-03-22 14:34:09 编辑
有N条记录,记录打卡人,打卡时间。现在要找到不同的人连续3天打卡时间一样的记录
如1号   7:00  打卡人A、B、D
             7:10  打卡人D、F
            7:11  打卡人G、H、I、J、K、M、N
            …………
2号   7:05  打卡人C、D
             7:17  打卡人A、E、F
            7:22  打卡人G、H、I
         7:23  打卡人 J、K、M、N
      …………
3号   7:05  打卡人A、F
             7:19  打卡人C、E、F
            7:24 打卡人B、H、I
         7:26  打卡人 G、M、N
      …………
5号   7:25  打卡人M、N、F
             7:02  打卡人G、E、F
            7:14 打卡人A、B、H、I
         7:16  打卡人 C、J
      …………
求一oracle语句,查询到不同人连续3天或以上打卡时间相同的记录
即能找到M、N二个人在1、2、3号是同一时间打的卡
想了好久,想不到好的方法,求助,多谢帮助
------解决方案--------------------
这样一个思路哈 : 先组装表,得出如下数据


打卡人,打卡天,第一天打卡时间,下一天打卡时间,第三天打卡时间   然后就可以出来了

下面给个思路哈, 没有去验证 有没有问题

如下 字段  :

user,reg_date,reg_time


select distinct user from 
(select a.*, 
(select reg_time from t_reg where reg_date=a.reg_date+1 and user=a.user) as reg_time_2 
(select reg_time from t_reg where reg_date=a.reg_date+2 and user=a.user) as reg_time_3
from t_reg a )  t  where reg_time =reg_time2 and reg_time=reg_time_3







 






------解决方案--------------------

WITH ta AS
(select 1 rq,'7:00' sj,  'A、B、D'              dkr   from dual union all  
select 1 rq,'7:10' sj,  'D、F'                  dkr   from dual union all  
select 1 rq,'7:11' sj,  'G、H、I、J、K、M、N'   dkr   from dual union all  
select 2 rq,'7:05' sj,  'C、D'                  dkr   from dual union all  
select 2 rq,'7:17' sj,  'A、E、F'               dkr   from dual union all  
select 2 rq,'7:22' sj,  'G、H、I'               dkr   from dual union all  
select 2 rq,'7:23' sj,  'J、K、M、N'            dkr   from dual union all  
select 3 rq,'7:05' sj,  'A、F'                  dkr   from dual union all  
select 3 rq,'7:19' sj,  'C、E、F'               dkr   from dual union all  
select 3 rq,'7:24' sj,  'B、H、I'               dkr   from dual union all  
select 3 rq,'7:26' sj,  'G、M、N'               dkr   from dual union all  
select 5 rq,'7:25' sj,  'M、N、F'               dkr   from dual union all  
select 5 rq,'7:02' sj,  'G、E、F'               dkr   from dual union all  
select 5 rq,'7:14' sj,  'A、B、H、I'            dkr   from dual union all  
select 5 rq,'7:16' sj,  'C、J'                  dkr   from dual 
),
tb AS
(select 'A' name from dual union all
  相关解决方案