Condição

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Lucas PM Carvalho
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Ter, 11 Mar 2014 10:27 am

Bom dia pessoal,

Trabalho em um Hospital Oncológico e surgiu a necessidade de um ajuste em um relatório, porem não estou conseguindo fazer. :cry:

O problema é o seguinte:

Para determinado convenio, caso exista dois procedimentos específicos prescritos, um desses procedimentos não deve ser listado. Porem se o mesmo procedimento for lançado sozinho o mesmo deve listar.

Ex: - CONVENIO - - PROCEDIMENTO -
| cd_convenio | | cd_procedimento|
| C1 | | P1 |
| C2 | | P2 |

- PRESCRIÇÃO-
| nr_prescrição | cd_convenio | cd_procedimento|
| PR1 | C1 | P1 |
| PR1 | C1 | P2 |
| PR2 | C1 | P2 |

Tentei realizar a condição da seguinte forma:

Selecionar tudo

and  (cd_convenio = 3 and cd_procedimento = P1 and exists(select distinct
                                                                                          a.cd_prescricao
                                                                                          from prescricao a,
                                                                                                  procedimento b,
                                                                                                  procedimento c
                                                                                          where a.cd_procedimento = b.cd_procedimento
                                                                                          and     b.cd_procedimenot = c.cd_procedimento
                                                                                          and     b.cd_procedimento = P1
                                                                                          and     c.cd_procedimento = P2)  cd_procedimento != P2) 
Alguém poderia me ajudar ??? :cry:
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Para não existir dúvidas,

qual deveria ser o resultado desejado do exemplo que você postou?
O que você está obtendo?
Exemplifique, além do código.
Lucas PM Carvalho
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Ter, 11 Mar 2014 10:27 am

Noctifero escreveu:Para não existir dúvidas,

qual deveria ser o resultado desejado do exemplo que você postou?
O que você está obtendo?
Exemplifique, além do código.
Ele deveria listar somente o P1 caso tivesse em uma mesma prescrição P1 e P2, o que esta ocorrendo.
Porem ele não esta listando P1 quando ele é prescrito separadamente.

Teria como usar um CASE no WHERE ?
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Ele não está listando P1, pois você está fazendo a seguinte condição obrigando que exista tanto P1 quanto P2.

Selecionar tudo

from prescricao a,
procedimento b,
procedimento c
....
and     b.cd_procedimento = P1
and     c.cd_procedimento = P2
Você não precisa usar 2 vezes a tabela de "procedimento",dizendo a lista de códigos esperadosP1 E P2), basta ligar a "PRESCRICAO" e "PROCEDIMENTO".
Acredito que você não precisaria do EXISTS, apenas um JOIN melhor elaborado.
Lucas PM Carvalho
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Ter, 11 Mar 2014 10:27 am

Bom dia,

Obrigado pela ajuda Noctifero, mais achei melhor elaborar uma Function para o problema nesse relatório pra facilitar manutenções futuras.

Obrigado vlw :D
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes