Jump to content
Sign in to follow this  
EliseuFirmino

filtro Oracle

Recommended Posts

Bom dia!

 

Estou tentando realizar um filtro por médicos, onde eu tenha a opção de selecionar um ou todos os médicos da instituição no relatório.

 

Porém ao utilizar ((a.cd_medico = :cd_medico) or (0 = :cd_medico)) meu retorno é em branco.

 

Alguém tem ideia do que posso acertar para o rel sair da forma que eu quero ? obg.

 

 

Segue codigo:

 

select

a.nr_atendimento,

a.nr_interno_conta,

a.dt_procedimento,

a.nm_medico,

p.nm_pessoa_fisica nm_paciente,

substr(obter_nome_convenio(a.cd_convenio),1,200) ds_convenio,

substr(obter_nome_setor(a.CD_SETOR_ATENDIMENTO),1,125) setor_atendimento,

/*a.cd_procedimento || '-' || */a.ds_procedimento ds_procedimento,

sum(a.qt_procedimento) qt_procedimento,

vl_unitario,

sum(a.vl_medico) vl_medico,

decode(Obter_Status_Protocolo(a.nr_seq_protocolo), 1, 'N', 2, 'S') FAT,

sum(a.vl_medico) *0.05 imposto,

 

case

when a.IE_RESPONSAVEL_CREDITO = 01

then 0

when a.IE_RESPONSAVEL_CREDITO = 03

then 0

when a.IE_RESPONSAVEL_CREDITO = 02 and a.CD_SETOR_ATENDIMENTO = 29

then ( (sum(a.vl_medico) - sum(a.vl_medico) *0.05/*imposto*/) *80) /100

when a.IE_RESPONSAVEL_CREDITO = 02

then sum(a.vl_medico) - sum(a.vl_medico) *0.05

end vl_repasse,

 

decode(

a.IE_RESPONSAVEL_CREDITO, 01,'H', 02, 'R', 03, 'M'

) repasse

 

 

From pessoa_fisica p, atendimento_paciente c, conta_paciente_honorario_v a

where a.nr_atendimento = c.nr_atendimento and c.cd_pessoa_fisica = p.cd_pessoa_fisica and a.cd_medico is not null

and c.cd_estabelecimento = :cd_estabelecimento

and a.dt_item between :dt_inicial and :dt_final

and nvl(a.nr_seq_proc_pacote,0) <> a.nr_sequencia

and a.cd_medico = :cd_medico

--and ((a.cd_medico = :cd_medico) or (0 = :cd_medico))

AND ((a.cd_convenio = :CD_CONV_ATEND) OR (0 = :CD_CONV_ATEND))

and ((c.ie_tipo_convenio = :cd_tipo_conv) or (0 = :cd_tipo_conv))

 

group by a.nr_atendimento,a.nr_interno_conta, a.nr_crm, a.cd_procedimento || '-' || a.ds_procedimento , a.cd_setor_atendimento, vl_unitario, a.dt_procedimento,

p.nm_pessoa_fisica, obter_nome_convenio(a.cd_convenio), a.ds_funcao,a.ds_procedimento, a.nr_seq_protocolo, a.nm_medico, a.cd_medico, a.IE_RESPONSAVEL_CREDITO

 

order by a.nr_atendimento, a.ds_funcao

Share this post


Link to post
Share on other sites

Tente algo como

nvl((trim(:cd_medico),a.cd_medico) = a.cd_medico

Share this post


Link to post
Share on other sites

O que ocorre ?

 

O que se passa para :cd_medico quando se quer todos ? Zero ?

 

Se sim tente

decode(:cd_medico,0,a.cd_medico,:cd_medico) = a.cd_medico

Share this post


Link to post
Share on other sites

Acontece pois se perde o índice ,

 

talvez

a.cd_medico = decode(:cd_medico,0,a.cd_medico,:cd_medico) 

não degrade tanto

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.