您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Oracle 12:加入逗号分隔的列表吗?

Oracle 12:加入逗号分隔的列表吗?

您可以拆分companies.legal_contacts使用正则表达式的列表,然后将结果集与联系人联系以获取电子邮件地址(也可以两次联系以获取ceo邮件),然后使用listagg函数重新连接电子邮件

SELECT co.company_id, p1.email, LISTAGG(p2.email, ', ') WITHIN GROUP (ORDER BY p2.email)
  FROM (
        SELECT DISTINCT company_id, ceo, REGEXP_SUBSTR(legal_contacts, '[^, ]+', 1, LEVEL) AS single_contact   
          FROM COMPANIES
       CONNECT BY REGEXP_SUBSTR(legal_contacts, '[^, ]+', 1, LEVEL) IS NOT NULL) co
  LEFT JOIN CONTACTS p1 ON co.ceo = p1.person_id
  LEFT JOIN CONTACTS p2 ON co.single_contact = p2.person_id
 GROUP BY co.company_id, p1.email;

如果companies.legal_contacts可以包含许多值,则由于性能原因,正则表达式的使用会有所变化,因此您必须使用MULTISET。

Oracle 2022/1/1 18:41:44 有332人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶