sql >> データベース >  >> RDS >> Oracle

Oracle 12:コンマ区切りのリストに参加しますか?

    companies.legal_contactsのリストを分割できます 正規表現を使用して、結果セットを連絡先と結合し、電子メールアドレスを取得します(2回結合して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を使用する必要があります。



    1. OracleApex5.0-静止画像を表示する

    2. T-SQLを使用して文字列から数値部分を取得するにはどうすればよいですか?

    3. MySQLのSYSDATE()とNOW():違いは何ですか?

    4. PostgreSQL14の最高の新機能