Retornar apenas a linha com a faixa de idade

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
ewerton.sousa
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Dom, 22 Mar 2020 6:14 pm

Prezados Boa Noite
Fiz uma query que me retorna as seguintes informações
Idade sendo a do paciente
valor referencia de um exame
e o ano inicial e o ano final.
Como faço um case para ele retornar apenas a linha que corresponde a faixa de idade dele.

Selecionar tudo

(SELECT DBAMV.FN_IDADE (PA.DT_NASCIMENTO, 'a', SYSDATE)IDADE,
                  DECODE (VR.TP_SEXO,
                          'M', 'Masculino',
                          'F', 'Feminino',
                          'A', 'Ambos')
               || ' - '|| 'De'|| ': '|| (VL_REFERENCIA_INICIAL)|| ' a '|| (VL_REFERENCIA_FINAL) AS VALOR_REFERENCIA,
               NR_ANO_INICIAL,
               NR_ANO_FINAL
          FROM DBAMV.PACIENTE  PA
               INNER JOIN DBAMV.TB_ATENDIME AT
                   ON PA.CD_PACIENTE = AT.CD_PACIENTE
               INNER JOIN DBAMV.PED_LAB PL
                   ON PL.CD_ATENDIMENTO = AT.CD_ATENDIMENTO
               INNER JOIN DBAMV.ITPED_LAB IPL
                   ON IPL.CD_PED_LAB = PL.CD_PED_LAB
               INNER JOIN DBAMV.VERSAO VER 
                   ON VER.CD_EXA_LAB = IPL.CD_EXA_LAB
               INNER JOIN DBAMV.VAL_REFERENCIA VR
                   ON VR.CD_VERSAO = VER.CD_VERSAO
         WHERE AT.CD_ATENDIMENTO = 3031175
               AND VER.CD_EXA_LAB = 2992
               AND VR.NM_CAMPO IN ('LINFOCITOS')
               AND VER.CD_VERSAO IN
                       (SELECT MAX (VER.CD_VERSAO)
                          FROM DBAMV.VERSAO  VER
                               INNER JOIN DBAMV.VAL_REFERENCIA VAL
                                   ON VER.CD_VERSAO = VAL.CD_VERSAO
                                    AND VAL.NM_CAMPO = 'LINFOCITOS'
                                      WHERE CD_EXA_LAB = 2992))



RESULTADO

Selecionar tudo

idade    valor_referencia          nr_ano_inicial     nr_ano_final
 64	     Ambos - De: 38 a 70	      0	                 8
 64 	   Ambos - De: 20 a 50	      8	                 200
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Tenta assim

Selecionar tudo

(SELECT DBAMV.FN_IDADE (PA.DT_NASCIMENTO, 'a', SYSDATE)IDADE,
                  DECODE (VR.TP_SEXO,
                          'M', 'Masculino',
                          'F', 'Feminino',
                          'A', 'Ambos')
               || ' - '|| 'De'|| ': '|| (VL_REFERENCIA_INICIAL)|| ' a '|| (VL_REFERENCIA_FINAL) AS VALOR_REFERENCIA,
               NR_ANO_INICIAL,
               NR_ANO_FINAL
          FROM DBAMV.PACIENTE  PA
               INNER JOIN DBAMV.TB_ATENDIME AT
                   ON PA.CD_PACIENTE = AT.CD_PACIENTE
               INNER JOIN DBAMV.PED_LAB PL
                   ON PL.CD_ATENDIMENTO = AT.CD_ATENDIMENTO
               INNER JOIN DBAMV.ITPED_LAB IPL
                   ON IPL.CD_PED_LAB = PL.CD_PED_LAB
               INNER JOIN DBAMV.VERSAO VER
                   ON VER.CD_EXA_LAB = IPL.CD_EXA_LAB
               INNER JOIN DBAMV.VAL_REFERENCIA VR
                   ON VR.CD_VERSAO = VER.CD_VERSAO
         WHERE AT.CD_ATENDIMENTO = 3031175
               AND VER.CD_EXA_LAB = 2992
               AND VR.NM_CAMPO IN ('LINFOCITOS')
               AND VER.CD_VERSAO IN
                       (SELECT MAX (VER.CD_VERSAO)
                          FROM DBAMV.VERSAO  VER
                               INNER JOIN DBAMV.VAL_REFERENCIA VAL
                                   ON VER.CD_VERSAO = VAL.CD_VERSAO
                                    AND VAL.NM_CAMPO = 'LINFOCITOS'
                                      WHERE CD_EXA_LAB = 2992)

   and DBAMV.FN_IDADE (PA.DT_NASCIMENTO, 'a', SYSDATE) between VL_REFERENCIA_INICIAL and VL_REFERENCIA_FINAL
)
Responder
  • Informação
  • Quem está online

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