在exasol中将多行汇总为单行

时间:2018-11-01 06:01:20

标签: sql exasolution

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

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中的功能

预先感谢:)

2 个答案:

答案 0 :(得分:1)

使用group_concat作为

group_concat(B.PRIVILEGE) AS ACCESS_RIGHTS

link可能是该格式的参考。

答案 1 :(得分:0)

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

SELECT DISTINCT
A.GRANTEE AS DB_ACCOUNT,
GROUP_CONCAT(B.PRIVILEGE)作为访问权限
来自
SYS.EXA_DBA_ROLE_PRIVS A
内联接
SYS.EXA_DBA_SYS_PRIVS B
开启
A.GRANTED_ROLE = B.GRANTEE
GROUP BY A.GRANTEE;