码迷,mamicode.com
首页 > 数据库 > 详细

Oracle中SYS_CONNECT_BY_PATH函数

时间:2016-07-14 17:23:14      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:

create table test (a varchar2(10),b varchar2(10));  
 
INSERT INTO TEST (A, B) VALUES (1, );  
INSERT INTO TEST (A, B) VALUES (1, );  
INSERT INTO TEST (A, B) VALUES (2, );  
INSERT INTO TEST (A, B) VALUES (2, );  
COMMIT;  
 
SELECT A, B FROM TEST  
 
A          B  
---------- ----------  
1122          起  
 
现在需要达到如下的效果,  
A          B  
---------- ----------  
1          我,们  
2          一,起  

只想用一句sql来返回结果

SELECT A, LTRIM(MAX(SYS_CONNECT_BY_PATH(B, ,)), ,) B  
FROM (SELECT B, A, ROW_NUMBER() OVER(PARTITION BY A ORDER BY B DESC) RN  
          FROM TEST)  
START WITH RN = 1 
CONNECT BY RN - 1 = PRIOR RN  
       AND A = PRIOR A  
GROUP BY A; 

其中,SYS_CONNECT_BY_PATH函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示。

row_number函数的用途是非常广泛,这个函数的功能是为查询出来的每一行记录生成一个序号。生产序号的方法通过over()函数里面的语句来控制。

摘自:http://database.51cto.com/art/201010/231125.htm

 

Oracle中SYS_CONNECT_BY_PATH函数

标签:

原文地址:http://www.cnblogs.com/chao193/p/5671040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!