oracle―SQL技巧之(一)连续记录查询sql案例测试
2013-01-15 00:00
525 查看
需求说明:
需要查询出某个客户某一年那些天是有连续办理过业务
实现SQL如下:
创建表:
测试数据:
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:
需要查询出某个客户某一年那些天是有连续办理过业务
实现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)
相关文章推荐
- oracle―SQL技巧之(一)连续记录查询sql案例测试
- Oracle--SQL技巧之一(查询连续的记录)
- SQL技巧之查询连续的记录
- oracle―SQL技巧之(二)WMSYS.WM_CONCAT函数实现多行记录用逗号拼接在一起
- 记录Oracle查询SQL语句(不定时更新)。
- Oracle取查询结果第一条记录SQL
- oracle sql中查询ip段内的记录
- sql 查询连续七天以上都有打卡的员工记录
- Oracle 查询并删除重复记录的SQL语句
- Oracle取查询结果数据的第一条记录SQL
- oracle查询sql练习技巧(这个很实用,不是吹的)
- Oracle一些查询的案例,(查询的优先级,Sql--plus函数,数字函数,日期时间函数)[详细版]
- 如何用SQL查询语句获取Oracle表 树形结构的记录(PL/SQL )
- Oracle中查询并删除重复记录的SQL语句详解
- Oracle 查询并删除重复记录的SQL语句
- ORACLE SQL: 查询连续号码段并合并的方法
- Oracle 删除重复数据只留一条 查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 wher
- sql查询技巧,按时间分段进行分组,每半小时一组统计组内记录数量
- SQL语句技巧:查询存在一个表而不在另一个表中的数据记录
- Oracle 查询并删除重复记录的SQL语句