Свертывая несколько строк в один ряд в exasol - PullRequest
0 голосов
/ 01 ноября 2018

Я выполнил следующий запрос, чтобы выяснить права доступа, назначенные каждому пользователю:

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 голосов
/ 01 ноября 2018

используйте group_concat как

group_concat(B.PRIVILEGE) AS ACCESS_RIGHTS

this ссылка может быть указана для формата.

0 голосов
/ 01 ноября 2018

У меня есть функция в Exasol для сворачивания строк в одну строку, и имя функции - GROUP_CONCAT . Модифицированный запрос:

ВЫБЕРИТЕ DISTINCT
A.GRANTEE AS ​​DB_ACCOUNT,
GROUP_CONCAT (B.PRIVILEGE) AS ACCESS_RIGHTS
ОТ
SYS.EXA_DBA_ROLE_PRIVS A
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
SYS.EXA_DBA_SYS_PRIVS B
ON
A.GRANTED_ROLE = B.GRANTEE
GROUP BY A.GRANTEE;

...