Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mephistoss

Select sem função

Recommended Posts

Boa tarde gente, queria muito tirar essa dúvida que não tenho mais nada pra tentar,

e desde ja agradeço .

 

Esse é o select ele trás o nome e convenio e a soma de todos os gastos desse paciente.

select  obter_pessoa_atendimento(b.nr_atendimento, 'N') nome,
        c.ds_convenio,
        sum(a.qt_resumo) qt_resumo,
        sum(a.vl_medico) vl_medico,
        sum(a.vl_imposto) vl_imposto,
        sum(a.vl_repasse_terceiro) vl_repasse,
        sum(a.vl_material + a.vl_procedimento - a.vl_imposto - a.vl_repasse_terceiro) vl_liquido,
        sum(a.vl_material + a.vl_materiais + a.vl_custo_operacional) vl_marcustooper,
        sum(a.vl_original) vl_original,
        sum(a.vl_repasse_calc) vl_repasse_calc,
        sum(a.vl_custo) vl_custo,
        sum(a.vl_material + a.vl_procedimento) vl_total,
        sum(a.vl_material + a.vl_procedimento - a.vl_medico - a.vl_custo) lucro
from convenio c, conta_paciente b, conta_paciente_resumo a
where       a.nr_interno_conta = b.nr_interno_conta
and          b.cd_convenio_parametro = c.cd_convenio
and          b.ie_status_acerto = 2
and          a.cd_estrutura_conta is not null
and          a.cd_setor_atendimento in (72,53,6)
and          b.cd_convenio_parametro = c.cd_convenio
group by b.nr_atendimento,
               C.DS_CONVENIO
order by 1,4

Gostaria de saber se existe a possibilidade de retornar esse mesmo resultado mais somente para os pacientes caso existam determinados procedimentos na tabela conta_paciente_resumo a.

 

Ex 1: Executo o select acima e trago a soma dos gastos todos os pacientes dos setores selecionados.

Ex 2: Agora eu quero trazer todos os gastos dos pacientes que tens utilizado cd_procedimento = 1,2,3

Ex 3: Agora quero trazer todos os gastos dos pacientes que tens utilizado cd_procedimento = 4,5,6

Compartilhar este post


Link para o post
Compartilhar em outros sites
Ex 2: Agora eu quero trazer todos os gastos dos pacientes que tens utilizado cd_procedimento = 1,2,3

 

 

 

Pode ser Gastos com 1,2,3

 

select  obter_pessoa_atendimento(b.nr_atendimento, 'N') nome,
        c.ds_convenio,
        sum(a.qt_resumo) qt_resumo,
        sum(a.vl_medico) vl_medico,
        sum(a.vl_imposto) vl_imposto,
        sum(a.vl_repasse_terceiro) vl_repasse,
        sum(a.vl_material + a.vl_procedimento - a.vl_imposto - a.vl_repasse_terceiro) vl_liquido,
        sum(a.vl_material + a.vl_materiais + a.vl_custo_operacional) vl_marcustooper,
        sum(a.vl_original) vl_original,
        sum(a.vl_repasse_calc) vl_repasse_calc,
        sum(a.vl_custo) vl_custo,
        sum(a.vl_material + a.vl_procedimento) vl_total,
        sum(a.vl_material + a.vl_procedimento - a.vl_medico - a.vl_custo) lucro
from convenio c, conta_paciente b, conta_paciente_resumo a
where       a.nr_interno_conta = b.nr_interno_conta
and          b.cd_convenio_parametro = c.cd_convenio
and          b.ie_status_acerto = 2
and          a.cd_estrutura_conta is not null
and          a.cd_setor_atendimento in (72,53,6)
and          b.cd_convenio_parametro = c.cd_convenio

AND          A.CD_PROCEDIMENTO IN (1,2,3)

group by b.nr_atendimento,
               C.DS_CONVENIO
order by 1,4

 

ou gastos TOTAIS de cleintes que tiveram 1,2,3

 

select  obter_pessoa_atendimento(b.nr_atendimento, 'N') nome,
        c.ds_convenio,
        sum(a.qt_resumo) qt_resumo,
        sum(a.vl_medico) vl_medico,
        sum(a.vl_imposto) vl_imposto,
        sum(a.vl_repasse_terceiro) vl_repasse,
        sum(a.vl_material + a.vl_procedimento - a.vl_imposto - a.vl_repasse_terceiro) vl_liquido,
        sum(a.vl_material + a.vl_materiais + a.vl_custo_operacional) vl_marcustooper,
        sum(a.vl_original) vl_original,
        sum(a.vl_repasse_calc) vl_repasse_calc,
        sum(a.vl_custo) vl_custo,
        sum(a.vl_material + a.vl_procedimento) vl_total,
        sum(a.vl_material + a.vl_procedimento - a.vl_medico - a.vl_custo) lucro
from convenio c, conta_paciente b, conta_paciente_resumo a
where       a.nr_interno_conta = b.nr_interno_conta
and          b.cd_convenio_parametro = c.cd_convenio
and          b.ie_status_acerto = 2
and          a.cd_estrutura_conta is not null
and          a.cd_setor_atendimento in (72,53,6)
and          b.cd_convenio_parametro = c.cd_convenio

AND          EXISTS (SELECT NULL
                     FROM   CONTA_PACIENTE_RESUMO A2
                     where  a2.nr_interno_conta = a.nr_interno_conta) --supondo ser a chave

group by b.nr_atendimento,
               C.DS_CONVENIO
order by 1,4

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja JOIN, pode utilizar de diversas formas, por exemplo, em determinada situação, necessito dos usuários não cadastrados em outra_tabela, eu uso a seguinte SQL:

SELECT
  u.id,
  u.nome
FROM usuarios u
LEFT JOIN outra_tabela o ON o.id_User = u.id
WHERE o.id_user IS NULL

Dessa forma eu tenho o id e o nome de cada usuário que é necessário realizar o cadastro personalizado nesta tabela.

 

 

 

Edição:

 

Desculpem, não sei se este exemplo funciona no ORACLE.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro venho agradecer a ajuda de todos.

 

Bom dia Motta, fiz dessa forma e funcionou, mas o resultado foi todos os pacientes que tinham os procedimentos (1,2,3,4)

 

Ex: ele encontrou pacientes que tinham cd_procedimentos = 1 e outro que tinha cd_procedimento = 2 e outro que tinha cd_procedimento 3 ... na verdade eu queria que trouxesse os pacientes que tinham os 4 procedimentos na conta dele.

select  obter_pessoa_atendimento(b.nr_atendimento, 'N') nome,
        c.ds_convenio,
        sum(a.qt_resumo) qt_resumo,
        sum(a.vl_medico) vl_medico,
        sum(a.vl_imposto) vl_imposto,
        sum(a.vl_repasse_terceiro) vl_repasse,
        sum(a.vl_material + a.vl_procedimento - a.vl_imposto - a.vl_repasse_terceiro) vl_liquido,
        sum(a.vl_material + a.vl_materiais + a.vl_custo_operacional) vl_marcustooper,
        sum(a.vl_original) vl_original,
        sum(a.vl_repasse_calc) vl_repasse_calc,
        sum(a.vl_custo) vl_custo,
        sum(a.vl_material + a.vl_procedimento) vl_total,
        sum(a.vl_material + a.vl_procedimento - a.vl_medico - a.vl_custo) lucro
from convenio c, conta_paciente b, conta_paciente_resumo a
where       a.nr_interno_conta = b.nr_interno_conta
and          b.cd_convenio_parametro = c.cd_convenio
and          b.ie_status_acerto = 2
and          a.cd_estrutura_conta is not null
and          a.cd_setor_atendimento in (72,53,6)
and          b.cd_convenio_parametro = c.cd_convenio
and         exists (select null
from conta_paciente_resumo a2
where a2.nr_interno_conta = a.nr_interno_conta
and a2.cd_procedimento in (1,2,3,4))
group by b.nr_atendimento,
               C.DS_CONVENIO
order by 1,4

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para isto tente fazer o segundo exemplo do post #2

com um exists e a condição dentro deste

 

na verdade eu queria que trouxesse os pacientes que tinham os 4 procedimentos na conta dele.

 

 

 

Os 4 exatos ou qq um doas 4 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem que trazer os 4 exatos.

 

fiz dessa forma mas não funcionou

 

and exists (select null
from conta_paciente_resumo a2
where a2.nr_interno_conta = a.nr_interno_conta
and a2.cd_procedimento in (1,2,3,4))

 

ele trouxe qualquer 1 dos 4

Compartilhar este post


Link para o post
Compartilhar em outros sites
and         4 = (select count(distinct a2.cd_procedimento)
from conta_paciente_resumo a2
where a2.nr_interno_conta = a.nr_interno_conta
and a2.cd_procedimento in (1,2,3,4))

deve funcionar

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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