简体   繁体   English

在exasol中将多行卷成一行

[英]Rolling up multiple rows into a single row in exasol

I've ran the following query to find out the access rights assigned to each user :我运行了以下查询以找出分配给每个用户的访问权限:

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;

The output of the query has each user having multiple access rights listed in row by row format, I need all ACCESS_RIGHTS listed into a single row for each user.查询的输出让每个用户都具有按行格式列出的多个访问权限,我需要将所有ACCESS_RIGHTS列为每个用户的一行。

For Eg.: The output comes like this for all the users:例如:对于所有用户,输出都是这样的:

EXECUTE
SELECT
CREATE

whereas I need the output as :而我需要输出为:

EXECUTE, SELECT, CREATE

I NEED A FUNCTION IN EXASOL .我需要 EXASOL 中的功能

Thanks in advance :)提前致谢 :)

use group_concat as使用group_concat作为

group_concat(B.PRIVILEGE) AS ACCESS_RIGHTS

this link might be referenced for the format.格式可能会引用此链接

I have got a function in Exasol for rolling up the rows into a single row and the function name is GROUP_CONCAT .我在 Exasol 中有一个函数,用于将行汇总为一行,函数名称为GROUP_CONCAT Modified query is :修改后的查询是:

SELECT DISTINCT选择不同
A.GRANTEE AS DB_ACCOUNT, A.GRANTEE 作为 DB_ACCOUNT,
GROUP_CONCAT(B.PRIVILEGE) AS ACCESS_RIGHTS GROUP_CONCAT(B.PRIVILEGE) 作为 ACCESS_RIGHTS
FROM
SYS.EXA_DBA_ROLE_PRIVS A SYS.EXA_DBA_ROLE_PRIVS A
INNER JOIN内部联接
SYS.EXA_DBA_SYS_PRIVS B SYS.EXA_DBA_SYS_PRIVS B
ON
A.GRANTED_ROLE = B.GRANTEE A.GRANTED_ROLE = B.GRANTEE
GROUP BY A.GRANTEE; GROUP BY A.GRANTEE;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM