程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle中SYS_CONNECT_BY_PATH函數的妙用

Oracle中SYS_CONNECT_BY_PATH函數的妙用

編輯:Oracle數據庫基礎

Oracle中SYS_CONNECT_BY_PATH函數是非常重要的函數,下面就為您介紹一個使用SYS_CONNECT_BY_PATH函數的例子,實例如下:

  1. create table test (a varchar2(10),b varchar2(10));  
  2.  
  3. INSERT INTO TEST (A, B) VALUES ('1', '我');  
  4. INSERT INTO TEST (A, B) VALUES ('1', '們');  
  5. INSERT INTO TEST (A, B) VALUES ('2', '一');  
  6. INSERT INTO TEST (A, B) VALUES ('2', '起');  
  7. COMMIT;  
  8.  
  9. SELECT A, B FROM TEST  
  10.  
  11. A          B  
  12. ---------- ----------  
  13. 1          我  
  14. 1          們  
  15. 2          一  
  16. 2          起  
  17.  
  18. 現在需要達到如下的效果,  
  19. A          B  
  20. ---------- ----------  
  21. 1          我,們  
  22. 2          一,起  
  23.  

只想用一句sql來返回結果。

  1. SELECT A, LTRIM(MAX(SYS_CONNECT_BY_PATH(B, ',')), ',') B  
  2. FROM (SELECT B, A, ROW_NUMBER() OVER(PARTITION BY A ORDER BY B DESC) RN  
  3.           FROM TEST)  
  4. START WITH RN = 1 
  5. CONNECT BY RN - 1 = PRIOR RN  
  6.        AND A = PRIOR A  
  7. GROUP BY A; 

其中,SYS_CONNECT_BY_PATH函數主要作用是可以把一個父節點下的所有子節點通過某個字符進行區分,然後連接在一個列中顯示。

row_number函數的用途是非常廣泛,這個函數的功能是為查詢出來的每一行記錄生成一個序號。生產序號的方法通過over()函數裡面的語句來控制。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved