【问题标题】:Rolling up multiple rows into a single row in exasol在 exasol 中将多行卷成单行
【发布时间】:2018-11-01 06:01:19
【问题描述】:

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

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

提前致谢:)

【问题讨论】:

    标签: sql exasolution


    【解决方案1】:

    使用group_concat作为

    group_concat(B.PRIVILEGE) AS ACCESS_RIGHTS
    

    这个link 可能被引用为格式。

    【讨论】:

      【解决方案2】:

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

      选择不同的
      A.GRANTEE 作为 DB_ACCOUNT,
      GROUP_CONCAT(B.PRIVILEGE) 作为 ACCESS_RIGHTS
      来自
      SYS.EXA_DBA_ROLE_PRIVS A
      内连接
      SYS.EXA_DBA_SYS_PRIVS B
      开启
      A.GRANTED_ROLE = B.GRANTEE
      按 A.GRANTE 分组;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        • 2016-06-23
        • 1970-01-01
        • 2018-04-04
        相关资源
        最近更新 更多