Oracle
 sql >> Database >  >> RDS >> Oracle

Hai bisogno di aiuto per memorizzare il valore da tre colonne

Supponi di voler inserire dati in una tabella come:

create table allEmailTable  (id number, mail varchar2(100))

Supponendo che tu abbia già la tua query che dia quel risultato, potresti aver bisogno di:

insert into allEmailTable(id, mail)
with yourQuery(ID, client_p_email, client_s_email, customer_mail) as (
  select 703        , 'test01@aol.com'           ,'prod01@gamil.com'   , 'dev01@yahoo.com' from dual union all                                   
  select 623        , 'ra.ben@yahoo.com'         ,'ra.ben@yahoo.com'   ,  'ea.bowens@gmail.com' from dual union all                                      
  select 965        , 'eighteenman@aol.com'      ,'eighteenman@aol.com',  'eighteenman@aol.com' from dual union all                                        
  select 270        , 'aunkurr1@icloud.com'      ,'amirbhai@icloud.com',  'amirbhai@me.com' from dual union all                                         
  select 719        , 'rah1021@yahoo.com'        ,'rh1021@yahoo.com'   ,  'mars77@vrizon.net' from dual
)
select distinct ID, mail
from (
      select id, client_p_email as mail from yourQuery UNION
      select id, client_s_email         from yourQuery UNION
      select id, customer_mail          from yourQuery 
     )

Il risultato:

SQL> select * from allEmailTable;

        ID MAIL
---------- --------------------
       270 amirbhai@icloud.com
       270 amirbhai@me.com
       270 aunkurr1@icloud.com
       623 ea.bowens@gmail.com
       623 ra.ben@yahoo.com
       703 dev01@yahoo.com
       703 prod01@gamil.com
       703 test01@aol.com
       719 mars77@vrizon.net
       719 rah1021@yahoo.com
       719 rh1021@yahoo.com
       965 eighteenman@aol.com

12 rows selected.

La tua domanda sarà:

insert into allEmailTable(id, mail)
with yourQuery(ID, client_p_email, client_s_email, customer_mail) as (
  SELECT DISTINCT 
                    clt.id,
                    clt.client_p_email,
                    clt.client_s_email,
                    cus.customer_mail
  from  client clt,
         customers cus
where clt.id=cus.id
)
select distinct ID, mail
from (
      select id, client_p_email as mail from yourQuery UNION
      select id, client_s_email         from yourQuery UNION
      select id, customer_mail          from yourQuery 
     )