Oracle中SYS_CONNECT_BY_PATH函數的妙用

在Oracle中,SYS_CONNECT_BY_PATH函數主要做用是能夠把一個父節點下的全部子節點經過某個字符進行區分,而後鏈接在一個列中顯示。 sql

AD: 函數



Oracle中SYS_CONNECT_BY_PATH函數是很是重要的函數,下面就爲您介紹一個使用SYS_CONNECT_BY_PATH函數的例子,實例以下: spa

   
  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來返回結果。 code

   
  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函數主要做用是能夠把一個父節點下的全部子節點經過某個字符進行區分,而後鏈接在一個列中顯示。 htm

row_number函數的用途是很是普遍,這個函數的功能是爲查詢出來的每一行記錄生成一個序號。生產序號的方法經過over()函數裏面的語句來控制。 get

相關文章
相關標籤/搜索