有如下记录
SO_NUM ITEM_NUM SET_NUM
1001 AAAA 1001
1001 AAAA 1001
1001 AAAA 1001
1001 BBBB 2222
1001 BBBB 2222
1001 CCCC 1234
1001 CCCC 1234
1001 CCCC 12341002 ABCD 1008
1002 ABCD 1008
1002 ABCD 1008
1002 CDEF 2005
1002 CDEF 2005
1002 EEEE 4001
1002 EEEE 4001
1002 EEEE 40011003 WWWW 1100
1003 WWWW 1100
1003 GGGG 1111
1003 GGGG 1111
1003 GGGG 1111
......现在要获得如下格式,其sql语句该如何写?
SO_NUM ITEM_NUM SET_NUM GROUP_NUM
1001 AAAA 1001 1
1001 AAAA 1001 1
1001 AAAA 1001 1
1001 BBBB 2222 2
1001 BBBB 2222 2
1001 CCCC 1234 3
1001 CCCC 1234 3
1001 CCCC 1234 31002 ABCD 1008 1
1002 ABCD 1008 1
1002 ABCD 1008 1
1002 CDEF 2005 2
1002 CDEF 2005 2
1002 EEEE 4001 3
1002 EEEE 4001 3
1002 EEEE 4001 31003 WWWW 1100 1
1003 WWWW 1100 1
1003 GGGG 1111 2
1003 GGGG 1111 2
1003 GGGG 1111 2
......
SO_NUM ITEM_NUM SET_NUM
1001 AAAA 1001
1001 AAAA 1001
1001 AAAA 1001
1001 BBBB 2222
1001 BBBB 2222
1001 CCCC 1234
1001 CCCC 1234
1001 CCCC 12341002 ABCD 1008
1002 ABCD 1008
1002 ABCD 1008
1002 CDEF 2005
1002 CDEF 2005
1002 EEEE 4001
1002 EEEE 4001
1002 EEEE 40011003 WWWW 1100
1003 WWWW 1100
1003 GGGG 1111
1003 GGGG 1111
1003 GGGG 1111
......现在要获得如下格式,其sql语句该如何写?
SO_NUM ITEM_NUM SET_NUM GROUP_NUM
1001 AAAA 1001 1
1001 AAAA 1001 1
1001 AAAA 1001 1
1001 BBBB 2222 2
1001 BBBB 2222 2
1001 CCCC 1234 3
1001 CCCC 1234 3
1001 CCCC 1234 31002 ABCD 1008 1
1002 ABCD 1008 1
1002 ABCD 1008 1
1002 CDEF 2005 2
1002 CDEF 2005 2
1002 EEEE 4001 3
1002 EEEE 4001 3
1002 EEEE 4001 31003 WWWW 1100 1
1003 WWWW 1100 1
1003 GGGG 1111 2
1003 GGGG 1111 2
1003 GGGG 1111 2
......
解决方案 »
- 在线等。分组后取每一组条的第一条数据
- 我远程连一个oracle数据库 想把那个数据库里面的Peopleinfo表里面的name字段下的数据 弄到我的数据库里面的 People 表 里面的XM字段下面
- 省市区街道社区小区楼栋表如何设计,如何在查询时展示一个完整的树结构
- 用于实现字段自增的存储过程,报错解决不了
- java 访问共享文件夹
- oracle中能否设置多个主键,而这样的作用主要表现在哪方面?
- 最菜的问题:单位系统换成oracle7.3,请问安装的问题?
- 求助一个查询语句
- 求metalink资料
- 如何在值是null 时,把它当零相加?或不加
- 在不同的机器,数据乱码的问题
- 用哪位高手有Oracle物理恢复的批处理文件和脚本文件吗?
DENSE_RANK() OVER(ORDER BY SO_NUM,ITEM_NUM) AS GROUP_NUM
FROM YOURTABLENAME
SO_NUM ITEM_NUM SET_NUM GROUP_NUM
1001 AAAA 1001 1
1001 AAAA 1001 2
1001 AAAA 1001 3
1001 BBBB 2222 4
1001 BBBB 2222 5
1001 CCCC 1234 6
1001 CCCC 1234 7
1001 CCCC 1234 81002 ABCD 1008 9
1002 ABCD 1008 10
1002 ABCD 1008 11
1002 CDEF 2005 12
1002 CDEF 2005 13
1002 EEEE 4001 14
1002 EEEE 4001 15
1002 EEEE 4001 161003 WWWW 1100 17
1003 WWWW 1100 18
1003 GGGG 1111 19
1003 GGGG 1111 20
1003 GGGG 1111 21
但是我这里有两个分组,一个是SO_NUM,另一个是SO_NUM,ITEM_NUM,SET_NUM,
测试了一下,二楼的结果为
SO_NUM ITEM_NUM SET_NUM GROUP_NUM(应该为)
1001 AAAA 1001 1
1001 AAAA 1001 1
1001 AAAA 1001 1
1001 BBBB 2222 2
1001 BBBB 2222 2
1001 CCCC 1234 3
1001 CCCC 1234 3
1001 CCCC 1234 31002 ABCD 1008 4 (1)
1002 ABCD 1008 4 (1)
1002 ABCD 1008 4 (1)
1002 CDEF 2005 5 (2)
1002 CDEF 2005 5 (2)
1002 EEEE 4001 6 (3)
1002 EEEE 4001 6 (3)
1002 EEEE 4001 6 (3)1003 WWWW 1100 7 (1)
1003 WWWW 1100 7 (1)
1003 GGGG 1111 8 (2)
1003 GGGG 1111 8 (2)
1003 GGGG 1111 8 (2)
SQL> select so_num,item_num,set_num,
2 dense_rank()over(partition by so_num order by item_num,set_num)cn
3 from kkk;SO_NUM ITEM_NUM SET_NUM CN
-------------------- -------------------- -------------------- ----------
1001 AAAA 1001 1
1001 AAAA 1001 1
1001 AAAA 1001 1
1001 BBBB 2222 2
1001 BBBB 2222 2
1001 CCCC 1234 3
1001 CCCC 1234 3
1001 CCCC 1234 3
1002 ABCD 1008 1
1002 ABCD 1008 1
1002 ABCD 1008 1SO_NUM ITEM_NUM SET_NUM CN
-------------------- -------------------- -------------------- ----------
1002 CDEF 2005 2
1002 CDEF 2005 2
1002 EEEE 4001 3
1002 EEEE 4001 3
1002 EEEE 4001 3
1002 EEEE 4001 3
1003 GGGG 1111 1
1003 GGGG 1111 1
1003 GGGG 1111 1
1003 WWWW 1100 2
1003 WWWW 1100 2已选择22行。是以item_num派讯,但是最后两行数据顺序有误;以set_num排序,结果如下,也有问题
SQL> select so_num,item_num,set_num,
2 dense_rank()over(partition by so_num order by set_num)cn from kkk;SO_NUM ITEM_NUM SET_NUM CN
-------------------- -------------------- -------------------- ----------
1001 AAAA 1001 1
1001 AAAA 1001 1
1001 AAAA 1001 1
1001 CCCC 1234 2
1001 CCCC 1234 2
1001 CCCC 1234 2
1001 BBBB 2222 3
1001 BBBB 2222 3
1002 ABCD 1008 1
1002 ABCD 1008 1
1002 ABCD 1008 1SO_NUM ITEM_NUM SET_NUM CN
-------------------- -------------------- -------------------- ----------
1002 CDEF 2005 2
1002 CDEF 2005 2
1002 EEEE 4001 3
1002 EEEE 4001 3
1002 EEEE 4001 3
1002 EEEE 4001 3
1003 WWWW 1100 1
1003 WWWW 1100 1
1003 GGGG 1111 2
1003 GGGG 1111 2
1003 GGGG 1111 2已选择22行。
DENSE_RANK() OVER(PARTITION BY SO_NUM ORDER BY SO_NUM,ITEM_NUM) AS GROUP_NUM
FROM TEST_SONUM下次把需求写清楚,不然也不知道你到底想要达到什么效果
http://blog.csdn.net/precipitant/archive/2005/08/03/445022.aspx
SELECT SO_NUM, ITEM_NUM, SET_NUM,
RANK() OVER(PARTITION BY SO_NUM ORDER BY ITEM_NUM) AS GROUP_NUM
FROM TEST_SONUM
求语句啥时候是个头,看看这篇文章,或许你就不用再向他人求了。大家的态度还不好。
http://blog.csdn.net/precipitant/archive/2005/08/03/445022.aspx
===============================================================================
大家的态度还不好????
LS的,
RANK能达到这效果吗?拜托你下次Ctrl+C, Ctrl+V的时候先自己研究一下后再做
最讨厌这种Ctrl+C Ctrl+V后跟风的做法,跟风跟对了还差不多,偏偏又跟出个错的-_-DENSE_RANK的效果:
SO_NUM ITEM_NUM SET_NUM GROUP_NUM
---------- -------- ---------- ----------
1001 AAAA 1001 1
1001 AAAA 1001 1
1001 AAAA 1001 1
1001 BBBB 2222 2
1001 BBBB 2222 2
1001 CCCC 1234 3
1001 CCCC 1234 3
1001 CCCC 1234 3RANK的效果
SO_NUM ITEM_NUM SET_NUM GROUP_NUM
---------- -------- ---------- ----------
1001 AAAA 1001 1
1001 AAAA 1001 1
1001 AAAA 1001 1
1001 BBBB 2222 4
1001 BBBB 2222 4
1001 CCCC 1234 6
1001 CCCC 1234 6
1001 CCCC 1234 6自己体会一下去吧.
dense_rank()