2

我运行了以下查询以找出分配给每个用户的访问权限:

SELECT DISTINCT
       A.GRANTEE AS DB_ACCOUNT,
       B.PRIVILEGE AS ACCESS_RIGHTS
  FROM SYS.EXA_DBA_ROLE_PRIVS A
 INNER JOIN SYS.EXA_DBA_SYS_PRIVS B
    ON A.GRANTED_ROLE = B.GRANTEE;

查询的输出使每个用户具有逐行格式列出的多个访问权限,我需要为每个用户将所有ACCESS_RIGHTS列在一行中。

例如:所有用户的输出都是这样的:

EXECUTE
SELECT
CREATE

而我需要输出为:

EXECUTE, SELECT, CREATE

我需要 EXASOL 中的功能

提前致谢 :)

4

2 回答 2

1

用作group_concat_

group_concat(B.PRIVILEGE) AS ACCESS_RIGHTS

格式可能会引用此链接。

于 2018-11-01T06:09:27.450 回答
0

我在 Exasol 中有一个函数,用于将行汇总为一行,函数名称为GROUP_CONCAT。修改后的查询是:

SELECT DISTINCT
A.GRANTEE AS DB_ACCOUNT,
GROUP_CONCAT(B.PRIVILEGE) AS ACCESS_RIGHTS
FROM
SYS.EXA_DBA_ROLE_PRIVS A
INNER JOIN
SYS.EXA_DBA_SYS_PRIVS B
ON
A.GRANTED_ROLE = B.GRANTEE
GROUP BY A.GRANTEE;

于 2018-11-01T06:09:03.717 回答