У меня следующий запрос, который возвращает мне имя владельца открытого действия и удаляет дублирующую запись из значений, разделенных запятыми, с помощью регулярных выражений.
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