我有点卡住了。我想做一个用户角色关系数据透视表,到目前为止我的查询如下所示:
WITH PIVOT_DATA AS (
SELECT *
FROM
(
SELECT USERNAME, GRANTED_ROLE
FROM DBA_USERS@DB_LINK U LEFT OUTER JOIN DBA_ROLE_PRIVS@DB_LINK R
ON U.USERNAME = R.GRANTEE
)
)
SELECT *
FROM PIVOT_DATA
PIVOT
(
COUNT(GRANTED_ROLE)
FOR GRANTED_ROLE
IN('CONNECT') -- Just an example
)
ORDER BY USERNAME ASC;
它工作得很好并且可以完成这项工作,但我不想写任何我想在 中搜索的角色pivot_in_clause
,因为我们有很多这样的角色,我不想每次都检查是否有任何角色变化。
那么有没有办法在中写SELECT
a pivot_in_clause
?我自己试过:
[...]
PIVOT
(
COUNT(GRANTED_ROLE)
FOR GRANTED_ROLE
IN( SELECT ROLE FROM DBA_ROLES@DB_LINK )
)
[...]
但它总是给我一个 ORA-00936: "missing expression" 在整个查询的第 1 行,我不知道为什么。不能有一个SELECT
或pivot_in_clause
我做错了吗?