目前,我已經寫了:需要使用SQL將多行連接成單個單元格?
SELECT IT_ID, SUBSTR (SYS_CONNECT_BY_PATH (grp , ','), 2) GROUPS
FROM (SELECT U.IT_ID, LAST_NAME, FIRST_NAME, GRP, ROW_NUMBER() OVER (ORDER BY U.IT_ID) rn, COUNT(*) OVER() cnt
FROM ECG_IT_USERS U
JOIN SECUREGROUPS G ON U.IT_ID = G.IT_ID)
START WITH rn = 1
CONNECT BY rn = PRIOR rn + 1
這將返回:
IT_ID GROUPS
afz23 ADMIN
afz23 ADMIN,QA
alv77 ADMIN,QA,USER
jaj23 ADMIN,QA,USER,USER
klo26 ADMIN,QA,USER,USER,PROD
klo26 ADMIN,QA,USER,USER,PROD,ADMIN
klo26 ADMIN,QA,USER,USER,PROD,ADMIN,QA
mav45 ADMIN,QA,USER,USER,PROD,ADMIN,QA,ADMIN
我想不通我怎麼可以讓它重新遇到一個新用戶後?它似乎在繼續前面的組,即使用戶不屬於他們。
我需要看到:
IT_ID GROUPS
afz23 ADMIN,QA
alv77 USER
jaj23 USER
klo26 PROD,ADMIN,QA
mav45 ADMIN
可能的重複[是否有一個Oracle SQL查詢將多行聚合成一行?](http://stackoverflow.com/questions/1120706/is-there-an-oracle-sql-query-that-aggregates - 多行成一行) –
我的DB2版本中沒有相關的功能,但如果您將'AND it_id = PRIOR it_id'添加到'CONNECT BY'子句中,會發生什麼情況(是嗎?甚至可能)? –