Ir para conteúdo
Entre para seguir isso  
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente algo como

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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acontece pois se perde o índice ,

 

talvez

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

não degrade tanto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.