各位大侠现有个问题需要求教
有个表的结构如下
clum : id code flg
date : 001 00 2
001 00 2
001 00 2
001 00 3
001 00 3
001 00 3
001 00 4
001 00 4
001 01 2
001 01 2
001 01 3
001 01 4
001 01 4
001 01 4
001 01 4
想得到一个字段 x 结果如下
clum : id code flg x
date : 001 00 2 1
001 00 2 1
001 00 2 1
001 00 3 2
001 00 3 2
001 00 3 2
001 00 4 3
001 00 4 3
---------
001 01 2 1
001 01 2 1
001 01 3 2
001 01 4 3
001 01 4 3
001 01 4 3
001 01 4 3
以id,code作为分组条件
flg为排序条件依次加1。
有没有好的解决办法,谢谢各位大侠啦
有个表的结构如下
clum : id code flg
date : 001 00 2
001 00 2
001 00 2
001 00 3
001 00 3
001 00 3
001 00 4
001 00 4
001 01 2
001 01 2
001 01 3
001 01 4
001 01 4
001 01 4
001 01 4
想得到一个字段 x 结果如下
clum : id code flg x
date : 001 00 2 1
001 00 2 1
001 00 2 1
001 00 3 2
001 00 3 2
001 00 3 2
001 00 4 3
001 00 4 3
---------
001 01 2 1
001 01 2 1
001 01 3 2
001 01 4 3
001 01 4 3
001 01 4 3
001 01 4 3
以id,code作为分组条件
flg为排序条件依次加1。
有没有好的解决办法,谢谢各位大侠啦
DROP TABLE tt;
CREATE TABLE tt(ID VARCHAR2(5),code VARCHAR2(5),flg NUMBER(2));
insert into tt values('001','00',2 );
insert into tt values('001','00',2 );
insert into tt values('001','00',2 );
insert into tt values('001','00',3 );
insert into tt values('001','00',3 );
insert into tt values('001','00',3 );
insert into tt values('001','00',4 );
insert into tt values('001','00',4 );
insert into tt values('001','01',2 );
insert into tt values('001','01',2 );
insert into tt values('001','01',3 );
insert into tt values('001','01',4 );
insert into tt values('001','01',4 );
insert into tt values('001','01',4 );
insert into tt values('001','01',4 );
SELECT * FROM tt;
SELECT tt.*,dense_rank() over(order by flg) x FROM tt;
输出:
001 01 2 1
001 00 2 1
001 00 2 1
001 01 2 1
001 00 2 1
001 01 3 2
001 00 3 2
001 00 3 2
001 00 3 2
001 01 4 3
001 01 4 3
001 01 4 3
001 01 4 3
001 00 4 3
001 00 4 3
from a
DROP TABLE tt;
CREATE TABLE tt(ID VARCHAR2(5),code VARCHAR2(5),flg NUMBER(2));
insert into tt values('001','00',2 );
insert into tt values('001','00',2 );
insert into tt values('001','00',2 );
insert into tt values('001','00',3 );
insert into tt values('001','00',3 );
insert into tt values('001','00',3 );
insert into tt values('001','00',4 );
insert into tt values('001','00',4 );
insert into tt values('001','01',2 );
insert into tt values('001','01',2 );
insert into tt values('001','01',3 );
insert into tt values('001','01',4 );
insert into tt values('001','01',4 );
insert into tt values('001','01',4 );
insert into tt values('001','01',4 );
SELECT * FROM tt;
SELECT tt.*,dense_rank() over(PARTITION BY id,code order by flg) x FROM tt;
输出:
001 00 2 1
001 00 2 1
001 00 2 1
001 00 3 2
001 00 3 2
001 00 3 2
001 00 4 3
001 00 4 3
001 01 2 1
001 01 2 1
001 01 3 2
001 01 4 3
001 01 4 3
001 01 4 3
001 01 4 3
SELECT tt.*,dense_rank() over(PARTITION BY id,code order by id,code,flg) x FROM tt;
结果出来得 是
001 00 2 1
001 00 2 1
001 00 2 1
001 00 3 1
001 00 3 1
001 00 3 1
001 00 4 1
001 00 4 1
001 01 2 1
001 01 2 1
001 01 3 1
001 01 4 1
001 01 4 1
001 01 4 1
001 01 4 1
呵呵 明天到公司再试试 谢谢 大家啊