[SQL]Union !!!!


select t.COD_MODALIDADE, 
       t.COD_TARIFA, 
       t.DTA_ATUALIZACAO, 
       t.DTA_CRIACAO, 
       t.DTA_FIM, 
       t.DTA_INI, 
       t.ID_CONVENIO, 
       t.NME_LOGIN, 
       t.VLR_TARIFA, 
       null DSC_MODALIDADE, 
       null COD_MODALIDADE1, 
       null COD_MODALIDADE2,
       null TPO_ARREC,
       'A'
  from tarifa t, modalidade_tarifa m
 where t.id_convenio = :idConvenioExecParam
   and t.cod_modalidade = m.cod_modalidade
   and trunc(sysdate) BETWEEN T.DTA_INI AND T.DTA_FIM
   and decode(:dtaInicialExecParam, null, 1, 2) = decode(:dtaInicialExecParam, null, 1, 3)
union
select t.COD_MODALIDADE, 
       t.COD_TARIFA, 
       t.DTA_ATUALIZACAO, 
       t.DTA_CRIACAO, 
       t.DTA_FIM, 
       t.DTA_INI, 
       t.ID_CONVENIO, 
       t.NME_LOGIN, 
       t.VLR_TARIFA, 
       null DSC_MODALIDADE, 
       null COD_MODALIDADE1, 
       null COD_MODALIDADE2,
       null TPO_ARREC,
       'B'
  from tarifa t, modalidade_tarifa m
 where t.id_convenio = :idConvenioExecParam
   and t.cod_modalidade = m.cod_modalidade
   and t.dta_ini < trunc(sysdate)
   and t.dta_fim is null
   and decode(:dtaInicialExecParam, null, 1, 2) = decode(:dtaInicialExecParam, null, 1, 3)
union
SELECT Tarifa.COD_MODALIDADE, 
       Tarifa.COD_TARIFA, 
       Tarifa.DTA_ATUALIZACAO, 
       Tarifa.DTA_CRIACAO, 
       Tarifa.DTA_FIM, 
       Tarifa.DTA_INI, 
       Tarifa.ID_CONVENIO, 
       Tarifa.NME_LOGIN, 
       Tarifa.VLR_TARIFA, 
       ModalidadeTarifa.DSC_MODALIDADE, 
       ModalidadeTarifa.COD_MODALIDADE AS COD_MODALIDADE1, 
       ModalidadeTarifa.COD_MODALIDADE AS COD_MODALIDADE2,
       ModalidadeTarifa.TPO_ARREC,
       'C'
FROM TARIFA Tarifa, MODALIDADE_TARIFA ModalidadeTarifa
WHERE Tarifa.cod_modalidade = ModalidadeTarifa.cod_modalidade
and (:idConvenioExecParam is null or Tarifa.id_convenio = :idConvenioExecParam)
and ( ( :dtaInicialExecParam is null and Tarifa.dta_ini >= trunc(sysdate) ) or Tarifa.dta_ini >= :dtaInicialExecParam   )
and (   :dtaFinalExecParam is null or (Tarifa.dta_fim <= :dtaFinalExecParam or Tarifa.dta_fim is null)   )
ORDER BY DSC_MODALIDADE,dta_ini,dta_fim;

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s