Нужна помощь в удалении последней запятой из запроса - PullRequest
0 голосов
/ 13 мая 2018

У меня следующий запрос, который возвращает мне имя владельца открытого действия и удаляет дублирующую запись из значений, разделенных запятыми, с помощью регулярных выражений.

OpenActionUsers
  AS ( SELECT DISTINCT action.INVESTIGATION_ID
            , REGEXP_REPLACE(
                LTRIM(
                  MAX(
                    SYS_CONNECT_BY_PATH(person.Last_Name || ' ' || person.First_Name || ', ', '<br/>')
                  )), 
              '([^,]+)(,[ ]*\1)+|(?<=(.*?, )\1)(.+?)<[^>]+>|\&(nbsp;)|(amp;)([^ ]+)( [ ]*\2)+', '\1') AS OPEN_ACTION_USERS
            , LISTAGG(userInfo.USER_ID, ', ') WITHIN GROUP (ORDER BY userInfo.USER_ID) AS OPEN_ACTION_USER_IDS
         FROM OpenActionInfo action
         JOIN ETK_User userInfo ON action.ACTION_OWNER = userInfo.USER_ID
         JOIN ETK_Person person ON userInfo.Person_Id = person.Person_Id
         GROUP BY action.INVESTIGATION_ID
         CONNECT BY action.INVESTIGATION_ID = PRIOR action.INVESTIGATION_ID AND RN = PRIOR RN + 1 START WITH RN = 1
     )

Например, вот как выглядит столбец моей таблицы "action_owner_name":

action_owner_name
------------------
Sam Williams,
Tom White,
Dan Andrews,
Chris Thomas, Sam Williams,
John Johnson, Dan Adnrews, Sean Gates,

Что можно сделать, чтобы удалить запятую из одной записи, а также изпоследняя запись, если есть несколько записей?

Я хочу, чтобы мой вывод desire выглядел так:

action_owner_name
------------------
Sam Williams
Tom White
Dan Andrews
Chris Thomas, Sam Williams
John Johnson, Dan Adnrews, Sean Gates

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Просто добавьте RTRIM(...,',') ..

RTRIM(
        LTRIM(
            MAX(SYS_CONNECT_BY_PATH(person.Last_Name || ' ' || person.First_Name || ', ', '<br/>')
        ),
        ','
    )
0 голосов
/ 13 мая 2018

Так как у каждого термина есть одна лишняя запятая в конце, вы можете удалить ее из подстановки:

SELECT
    SUBSTR(OPEN_ACTION_USERS, 1, LENGTH(OPEN_ACTION_USERS) - 1) AS OPEN_ACTION_USERS,
    OPEN_ACTION_USER_IDS
FROM OpenActionUsers
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...