Oracle中SYS_CONNECT_BY_PATH函數(shù)的妙用
Oracle中SYS_CONNECT_BY_PATH函數(shù)是非常重要的函數(shù),下面就為您介紹一個(gè)使用SYS_CONNECT_BY_PATH函數(shù)的例子,實(shí)例如下:
- 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
- ---------- ----------
- 1 我
- 1 們
- 2 一
- 2 起
- 現(xiàn)在需要達(dá)到如下的效果,
- A B
- ---------- ----------
- 1 我,們
- 2 一,起
只想用一句sql來(lái)返回結(jié)果。
- 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函數(shù)主要作用是可以把一個(gè)父節(jié)點(diǎn)下的所有子節(jié)點(diǎn)通過(guò)某個(gè)字符進(jìn)行區(qū)分,然后連接在一個(gè)列中顯示。
row_number函數(shù)的用途是非常廣泛,這個(gè)函數(shù)的功能是為查詢出來(lái)的每一行記錄生成一個(gè)序號(hào)。生產(chǎn)序號(hào)的方法通過(guò)over()函數(shù)里面的語(yǔ)句來(lái)控制。
【編輯推薦】