目前,我已经写了:需要使用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'子句中,会发生什么情况(是吗?甚至可能)? –