Oracle查询如果一条记录的某一列与上一条记录不一样,则计数加1要如何实现

oracle数据库中我有一个表为col1col211121221111322想要查询出结果为col1num1322大概需求是按col1分组col2依次遍历,如第二条col... oracle数据库中
我有一个表 为 col1 col2
1 1
1 2
1 2
2 1
1 1
1 3
2 2
想要查询出结果为 col1 num
1 3
2 2
大概需求是按col1 分组 col2依次遍历,如第二条col2 为2 与第一条的1不一样,则计数加1 第三条与第二条都为2 则计数不变 col为1的第四条为col2为1 与第三条不一致 与col为1的第三条不一样,计数又+1 这样的需求我现在是放在程序中用代码遍历实现,但是在一条100万条数据中效率很慢,想在数据库中有没有办法实现?
要的结果应该是 col1 num
1 4
2 2
展开
 我来答
badkano
推荐于2017-12-16 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885371
团长

向TA提问 私信TA
展开全部

做了个简单测试以你上边的数据

建表

create table test
(col1 int,
col2 int);

insert into test values (1,1);
insert into test values (1,2);
insert into test values (1,2);
insert into test values (2,1);
insert into test values (1,1);
insert into test values (1,3);
insert into test values (2,2);

运行

with t as
(select s.col1,s.col2,row_number() over (partition by col1 order by rn) rn
from
(select col1,col2,rownum rn from test) s)
select a.col1,count(*)+1 from t a,t b where a.col1=b.col1 and a.col2<>b.col2 and a.rn=b.rn+1
group by a.col1

 

结果截图

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式