oracle 对某列连续的数据为一组,如何写SQL

以图中的rownum字段为检查连续字段。想查出来的数据为:rownum分组序号31526272143真想不出方法,谢谢了。不好意思,上面说的不应该是分组序号。应该是组序号... 以图中的rownum 字段为检查连续字段。
想查出来的数据为:
rownum 分组序号
3 1
5 2
6 2
7 2
14 3

真想不出方法,谢谢了。
不好意思,上面说的不应该是分组序号。应该是组序号。目的是取出当前表中有多少组连续数据,因为可能不是很标准的连续数据,单条也算一组,连续的为一组。以rownum 为检查连续字段。

求这个SQL怎么写!
展开
 我来答
frogley
2013-08-27 · TA获得超过1854个赞
知道小有建树答主
回答量:1008
采纳率:50%
帮助的人:1064万
展开全部
with tmp as(
select 1001 as c1,'Mar-13' as c2,90000 as c3,70000 as c4,3 as "rownum" from dual union all
select 1001 as c1,'May-13' as c2,50000 as c3,10000 as c4,5 as "rownum" from dual union all
select 1001 as c1,'Jun-13' as c2,60000 as c3,10000 as c4,6 as "rownum" from dual union all
select 1001 as c1,'Jul-13' as c2,100000 as c3,40000 as c4,7 as "rownum" from dual union all
select 1002 as c1,'Jul-13' as c2,140000 as c3,90000 as c4,14 as "rownum" from dual
)
select d.c1,d.c2,d.c3,d.c4,d."rownum",c.rr from(
  select k,rownum rr from(
    select distinct (n-r) as k from(
      select "rownum" n,rownum as r from tmp
    ) a
  ) b
) c
inner join (select c1,c2,c3,c4,"rownum",rownum as r from tmp) d 
on c.k=d."rownum"-d.r;

 结果如下:

更多追问追答
追问

太强了,大神能不能不用inner join,一条查询出来。

因为得到上面图中原表的数据,已经有一大串的SQL 了。不是在一张表中。


我用你的SQL套了一下,就成这样了。

追答

刚发现oracle有个dense_rank函数,可以很方便的实现你的要求:

select c1,c2,c3,c4,"rownum",dense_rank() over (order by "rownum"-rownum) rr from tmp;

这么一句就行了。

citykhan
2013-08-27 · 超过29用户采纳过TA的回答
知道答主
回答量:114
采纳率:0%
帮助的人:73.3万
展开全部
select rownum '组号' ,t.* from (…通过sql查询到的数据…) t
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孤独赤月
2013-08-27 · TA获得超过1867个赞
知道小有建树答主
回答量:2356
采纳率:0%
帮助的人:1287万
展开全部
用多少样的方式去看这个啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mms85840884
2013-08-27 · TA获得超过159个赞
知道答主
回答量:270
采纳率:0%
帮助的人:103万
展开全部
能解释清楚一点么?
更多追问追答
追问
已经补充,谢谢关注,希望能解答。
追答
还是不清楚。
这样吧,你列举些简单的数据。
1.表中的数据
2.想拿到什么样式的数据
这样好方便理解。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式