精易论坛

标题: SQL技巧之查询连续的记录 [打印本页]

作者: ㄣ负二代    时间: 2013-1-12 08:27
标题: SQL技巧之查询连续的记录
需求说明:  需要查询出某个客户某一年那些天是有连续办理过业务
  实现SQL如下:
  创建表:
  create table test_num
  (tyear number,
  tdate date);
  测试数据:
  insert into test_num
  select 2014,trunc(sysdate)-1 from dual union all
  select 2014,trunc(sysdate)-002 from dual union all
  select 2014,trunc(sysdate)-003 from dual union all
  select 2014,trunc(sysdate)-004 from dual union all
  select 2014,trunc(sysdate)-005 from dual union all
  select 2014,trunc(sysdate)-007 from dual union all
  select 2014,trunc(sysdate)-008 from dual union all
  select 2014,trunc(sysdate)-009 from dual union all
  select 2013,trunc(sysdate)-120 from dual union all
  select 2013,trunc(sysdate)-121 from dual union all
  select 2013,trunc(sysdate)-122 from dual union all
  select 2013,trunc(sysdate)-124 from dual union all
  select 2013,trunc(sysdate)-125 from dual union all
  select 2013,trunc(sysdate)-127 from dual union all
  select 2015,trunc(sysdate)-099 from dual union all
  select 2015,trunc(sysdate)-100 from dual union all
  select 2015,trunc(sysdate)-101 from dual union all
  select 2015,trunc(sysdate)-102 from dual union all
  select 2015,trunc(sysdate)-104 from dual union all
  select 2015,trunc(sysdate)-105 from dual;
  写SQL:
  SELECT TYEAR, MIN(TDATE) AS STARTDATE, MAX(TDATE), COUNT(TYEAR) AS ENDNUM
  FROM (SELECT A.*, A.TDATE - ROWNUM AS GNUM
  FROM (SELECT * FROM TEST_NUM ORDER BY TYEAR, TDATE) A)
  GROUP BY TYEAR, GNUM
  ORDER BY TYEAR, MIN(TDATE)

作者: 宇智波·佐助    时间: 2013-1-20 09:12
会加油加油




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4