oracle生成多组连续数值问题

木夏清 2014-03-25 10:32:38
有表 t_data
字段 start ,end



数据

start end
-----------------------
2 5
4 7
1 3


生成从start 到end 的连续序列
例如 由数据 1 3
得到
1 1 3
2 1 3
3 1 3

得到结果
seq start end
---------------------
2 2 5
3 2 5
4 2 5
5 2 5

4 4 7
5 4 7
6 4 7
7 4 7

1 1 3
2 1 3
3 1 3
...全文
115 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
流浪川 2014-03-25
  • 打赏
  • 举报
回复
引用 2 楼 muXiaMoYan 的回复:
[quote=引用 1 楼 hidanger521 的回复:] [quote=引用 楼主 muXiaMoYan 的回复:] 有表 t_data 字段 start ,end 数据 start end ----------------------- 2 5 4 7 1 3 生成从start 到end 的连续序列 例如 由数据 1 3 得到 1 1 3 2 1 3 3 1 3 得到结果 seq start end --------------------- 2 2 5 3 2 5 4 2 5 5 2 5 4 4 7 5 4 7 6 4 7 7 4 7 1 1 3 2 1 3 3 1 3
WITH test AS(
SELECT 2 st,5 ed FROM dual UNION ALL
SELECT 4,7 FROM dual UNION ALL
SELECT 1,3 FROM dual)
SELECT DISTINCT TEST.ST, TEST.ED, ST + LEVEL - 1
  FROM TEST
CONNECT BY ST + LEVEL - 1 <= ED
 ORDER BY st,ed
[/quote] 数据表中start 到end 的跨度不会超过5 但是在有64条数据的时候 跑了2分钟还没有跑完 真实数据大概在200 - 500 之间, 不能跑。。[/quote] 我再想想吧,我才也发现好像确实有性能问题,数据集成基数增加,我还没找到原因。。。
木夏清 2014-03-25
  • 打赏
  • 举报
回复
引用 1 楼 hidanger521 的回复:
[quote=引用 楼主 muXiaMoYan 的回复:] 有表 t_data 字段 start ,end 数据 start end ----------------------- 2 5 4 7 1 3 生成从start 到end 的连续序列 例如 由数据 1 3 得到 1 1 3 2 1 3 3 1 3 得到结果 seq start end --------------------- 2 2 5 3 2 5 4 2 5 5 2 5 4 4 7 5 4 7 6 4 7 7 4 7 1 1 3 2 1 3 3 1 3
WITH test AS(
SELECT 2 st,5 ed FROM dual UNION ALL
SELECT 4,7 FROM dual UNION ALL
SELECT 1,3 FROM dual)
SELECT DISTINCT TEST.ST, TEST.ED, ST + LEVEL - 1
  FROM TEST
CONNECT BY ST + LEVEL - 1 <= ED
 ORDER BY st,ed
[/quote] 数据表中start 到end 的跨度不会超过5 但是在有64条数据的时候 跑了2分钟还没有跑完 真实数据大概在200 - 500 之间, 不能跑。。
流浪川 2014-03-25
  • 打赏
  • 举报
回复
引用 楼主 muXiaMoYan 的回复:
有表 t_data 字段 start ,end 数据 start end ----------------------- 2 5 4 7 1 3 生成从start 到end 的连续序列 例如 由数据 1 3 得到 1 1 3 2 1 3 3 1 3 得到结果 seq start end --------------------- 2 2 5 3 2 5 4 2 5 5 2 5 4 4 7 5 4 7 6 4 7 7 4 7 1 1 3 2 1 3 3 1 3
WITH test AS(
SELECT 2 st,5 ed FROM dual UNION ALL
SELECT 4,7 FROM dual UNION ALL
SELECT 1,3 FROM dual)
SELECT DISTINCT TEST.ST, TEST.ED, ST + LEVEL - 1
  FROM TEST
CONNECT BY ST + LEVEL - 1 <= ED
 ORDER BY st,ed

17,088

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧