进入话题A表name  time 
张三    2011-01-01 12:10:00
张三    2011-01-01 12:50:00
张三    2011-01-01 14:00:00
张三    2011-01-01 14:10:00
李四    2011-01-01 12:10:00
李四    2011-01-01 12:50:00
李四    2011-01-01 14:00:00
李四    2011-01-01 14:10:00B表
name  startTime     endTime 要求:查询出近两次的时间 大于半小时的数据 保存在B表
如上需求的话 如果显示正确 B表应该如下:
B表
name  startTime           endTime 
张三    2011-01-01 12:10:00 2011-01-01 12:50:00
张三    2011-01-01 12:50:00 2011-01-01 14:00:00
李四    2011-01-01 12:10:00 2011-01-01 12:50:00
李四    2011-01-01 12:50:00 2011-01-01 14:00:00
求查询A表的SQL语句  B表插入就不用了

解决方案 »

  1.   

    来人啊  要沉帖呢  火龙果啊  还有什么来着…… 忘了  help me!
      

  2.   

    A表没ID之类的字段嘛?有的话最好,否则可能效率很慢SELECT t1.name, t1.time AS startTime, t2.time AS endTime
      FROM A t1, A t2
     WHERE t1.name = t2.name
       AND t1.time < t2.time
       AND NOT EXISTS (SELECT 1 FROM A t3 WHERE t3.name = t1.name AND t3.time > t1.time AND t3.time < t2.time)
       AND TIMEDIFF(t2.time, t1.time) >= '00:30:00'
    t1开始时间,t2结束时间,两者自联,t1 < t2,并且不存在任何一个t1 < t3 < t2的情况最后一个判断半小时的,需要根据你的数据库,我的是mysql
      

  3.   

    3Q  非常感谢 又学一招 看完眼前一亮 原来还可以这样 so is nei!
      

  4.   

    结贴了,但是也给你贴一下吧,刚才写的过程中你结贴的
    oracle
    scott@ORCL> select *from a_6_16;NAME       TIME
    ---------- --------------
    张三       01-1月 -11
    张三       01-1月 -11
    张三       01-1月 -11
    张三       01-1月 -11
    李四       01-1月 -11
    李四       01-1月 -11
    李四       01-1月 -11
    李四       01-1月 -11select name,
           to_char(s_time, 'yyyy-mm-dd hh24:mi:ss') s_time,
           to_char(e_time, 'yyyy-mm-dd hh24:mi:ss') e_time
      from (select name,
                   s_time,
                   e_time,
                   row_number() over(partition by name order by e_time desc) r_num
              from (select name,
                           lead(time, 1, null) over(partition by name order by time desc) s_time,
                           time e_time
                      from a_6_16)
             where e_time - s_time > 1 / 24 / 2)
     where r_num < 3
    NAME       S_TIME              E_TIME
    ---------- ------------------- -------------------
    李四       2011-01-01 12:50:00 2011-01-01 14:00:00
    李四       2011-01-01 12:10:00 2011-01-01 12:50:00
    张三       2011-01-01 12:50:00 2011-01-01 14:00:00
    张三       2011-01-01 12:10:00 2011-01-01 12:50:00