利用分析函数生成连续数据
2015-03-19 16:53
381 查看
WITH cat AS
(
select '1000' ID, '1010'+1 PID FROM dual union
SELECT '1011' ID, '1050'+1 PID FROM dual UNION
SELECT '1051' ID, '1056'+1 PID FROM dual UNION
SELECT '1059' ID, '1072'+1 PID FROM dual UNION
SELECT '1200' ID, '1210'+1 PID FROM dual UNION
SELECT '1211' ID, '1240'+1 PID FROM dual UNION
SELECT '1501' ID, '1570'+1 PID FROM dual UNION
SELECT '1571' ID, '1580'+1 PID FROM dual UNION
SELECT '1581' ID, '1600'+1 PID FROM dual
),
xx AS (
SELECT ID,pid,LAG(pID) OVER (ORDER BY ID) AS new_id FROM cat
),
yy AS (
SELECT ID,pid,new_id,CASE WHEN id = nvl(new_id,pid) THEN 0 ELSE 1 END AS group_id FROM xx
),
xy AS (
SELECT ID,pid,new_id,SUM(group_id)OVER(ORDER BY ID) AS g_ri FROM yy
)
--SELECT * FROM xy
SELECT MIN(ID) AS ID,MAX(pid) - 1 AS pid FROM xy GROUP BY g_ri ORDER BY g_ri;
(
select '1000' ID, '1010'+1 PID FROM dual union
SELECT '1011' ID, '1050'+1 PID FROM dual UNION
SELECT '1051' ID, '1056'+1 PID FROM dual UNION
SELECT '1059' ID, '1072'+1 PID FROM dual UNION
SELECT '1200' ID, '1210'+1 PID FROM dual UNION
SELECT '1211' ID, '1240'+1 PID FROM dual UNION
SELECT '1501' ID, '1570'+1 PID FROM dual UNION
SELECT '1571' ID, '1580'+1 PID FROM dual UNION
SELECT '1581' ID, '1600'+1 PID FROM dual
),
xx AS (
SELECT ID,pid,LAG(pID) OVER (ORDER BY ID) AS new_id FROM cat
),
yy AS (
SELECT ID,pid,new_id,CASE WHEN id = nvl(new_id,pid) THEN 0 ELSE 1 END AS group_id FROM xx
),
xy AS (
SELECT ID,pid,new_id,SUM(group_id)OVER(ORDER BY ID) AS g_ri FROM yy
)
--SELECT * FROM xy
SELECT MIN(ID) AS ID,MAX(pid) - 1 AS pid FROM xy GROUP BY g_ri ORDER BY g_ri;
相关文章推荐
- 利用Oracle分析函数row_number和sys_connect_by_path实现多行数据合并为一行
- 利用Oracle分析函数row_number和sys_connect_by_path实现多行数据合并为一行
- 利用Oracle分析函数实现多行数据合并为一行
- 今晚我最得意之作——利用Oracle超级无敌强大函数生成“批量生成数据语句”!
- 利用分析函数删除重复数据
- 用分析函数实现自动生成sqlloader定长数据装载控制文件的一个语句
- 利用分析函数删除重复数据
- Wireshark之利用IO Graph分析数据并将数据复制到excel中生成图
- 利用 Python 进行数据分析(二)尝试处理一份 JSON 数据并生成条形图
- 利用Oracle分析函数实现多行数据合并为一行
- 利用Oracle分析函数实现多行数据合并为一行
- 今晚我最得意之作——利用Oracle超级无敌强大函数生成“批量生成数据语句”!
- 利用Oracle分析函数row_number和sys_connect_by_path实现多行数据合并为一行
- SQL SERVER2000教程-第五章 处理数据 第二十二节 利用UNION对多条SQL查询语句合并生成表
- 《关于利用经营分析数据支持抗震救灾工作的紧急通知》
- C++友元friend --c++利用friend修饰符,可以让一些你设定的函数能够对这些保护数据进行操作
- 通过ORACLE分析函数过滤重复数据 推荐
- 分析SQL server表数据结构生成XML数据字典+XSLT生成可视文档
- 利用数据岛生成动态的树
- 利用SQL Server 2005 COLUMNS_UPDATED函数进行数据审计