有如下记录
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
......
解决方案 »
- orion 性能监控问题
- 100分求一個CommandType.TableDirect;
- 关于海量数据处理问题(配置)
- 如何通过数据字典查询表空间内表名为sys_userpara,所有字段为char_name内容???
- 请问 "ORA-01536:space quota exceeded for tablespace 'POST_INDX'"是表示什么,如何解决问题?急!
- 求一条简单的SQL
- 在oracle中,有没有类似SQL中的通配符?
- 关于DBMS_SQL封装过程的语句转换
- odp.net技术文档哪里有
- Oracle存储过程怎么获取SQL影响了多少行?
- 在不同的机器,数据乱码的问题
- 用哪位高手有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()