2011-11-07 91 views
0
SELECT 
    IT_ID, 
    Max(SUBSTR (SYS_CONNECT_BY_PATH (grp , ','), 2)) GROUPS 
FROM (
    SELECT 
    U.IT_ID, 
    LAST_NAME, 
    BFIRST_NAME, 
    GRP, 
    ROW_NUMBER() OVER (partition by u.it_id 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 and it_id = prior it_id 
Group by it_id 

这是我的代码 - 我得到一个错误: “ORA-00904”, “RN”:无效的IDOracle错误 - 无效的标识符(904)?

+2

RN在内部查询是不是对外部查询的访问。 –

回答

1

如果你的别名派生表:

SELECT 
    IT_ID, 
    Max(SUBSTR (SYS_CONNECT_BY_PATH (grp , ','), 2)) GROUPS 
FROM (
    SELECT 
    U.IT_ID, 
    LAST_NAME, 
    BFIRST_NAME, 
    GRP, 
    ROW_NUMBER() OVER (partition by u.it_id ORDER BY U.IT_ID) rn, 
    COUNT(*) OVER() cnt 
FROM ECG_IT_USERS U 
JOIN SECUREGROUPS G ON U.IT_ID = G.IT_ID) DT1 
START WITH dt1.rn = 1 
CONNECT BY dt1.rn = PRIOR dt1.rn + 1 and dt1.it_id = prior dt1.it_id 
Group by dt1.it_id 
相关问题