sql >> Database >  >> RDS >> Oracle

Oracle 12:deelnemen aan door komma's gescheiden lijst?

je kunt de lijst met companies.legal_contacts splitsen met behulp van reguliere expressie, voeg vervolgens de resultatenset toe met contacten om de e-mailadressen te krijgen (twee keer deelnemen om ceo te krijgen mail ook) en voeg vervolgens de e-mails opnieuw samen met listagg functie:

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;

als de companies.legal_contacts kan veel waarden bevatten, het gebruik van reguliere expressies verandert een beetje om prestatieredenen en u moet een MULTISET gebruiken.



  1. Hoe installeer ik een Python-pakket op Linux zodat het wordt gevonden door de reeds werkende PostgreSQL 13 plpython3u-extensie?

  2. Innerlijke drie tafels samenvoegen

  3. Het automatiseren van de tabellarische modelverwerking van Analysis Services (SSAS)-databases in SQL Server

  4. Mysql-toestemmingsfouten met 'gegevens laden'