Jump to content

igor.js167

Members
  • Content count

    2
  • Joined

  • Last visited

Community Reputation

0 Comum

About igor.js167

  1. igor.js167

    restringir select a apenas uma linha de data por pessoa?

    Esse dado vem da tabela 'med_avaliacao_result', uma tabela onde tem o resultado de todos os itens de todas as avaliações do sistema. Estou restringido para o item 1266, que é o campo "Diagnóstico Nutricional" da avaliação 49, "Avaliação Nutricional". Esse select é um select resumido, o completo se encontra abaixo, perceba que tenho de fazer várias joins da mesma tabela, puxando apenas itens distintos: select nome.nm_pessoa_fisica NOME_PCT, decode(asg.qt_resultado,21,'Bem nutrido',22,'Risco nutricional',23,'Desnutrição leve', 24,'Desnutrição moderada',25,'Desnutrição grave') ASG_7P, decode(an.qt_resultado,61,'Primário',62,'Secundário',63,'Terciário') NIVEL_AN, decode(eat.qt_resultado,181,'< ou = 3 (Sem risco de broncoaspiração)',182,'> 3 (Com risco de broncoaspiração)') EAT10, decode(mis.qt_resultado,501,'< 6 (Nutrido)',502,'> 6 (Desnutrição e Inflamação)'), decode(diag.qt_resultado,871,'Desnutrição grave',872,'Desnutrição moderada',873,'Desnutrição leve', 874,'Eutrofia',875,'Sobrepeso',876,'Obesidade') from med_avaliacao_paciente codnome, pessoa_fisica nome, med_avaliacao_result asg, med_avaliacao_result an, med_avaliacao_result eat, med_avaliacao_result mis, med_avaliacao_result diag where asg.nr_seq_item = 1162 and an.nr_seq_item = 1166 and diag.nr_seq_item = 1266 and eat.nr_seq_item = 1180 and mis.nr_seq_item = 1218 and diag.nr_seq_avaliacao = asg.nr_seq_avaliacao and asg.nr_seq_avaliacao = an.nr_seq_avaliacao and an.nr_seq_avaliacao = eat.nr_seq_avaliacao and eat.nr_seq_avaliacao = mis.nr_seq_avaliacao and mis.nr_seq_avaliacao = codnome.nr_sequencia and codnome.cd_pessoa_fisica = nome.cd_pessoa_fisica and codnome.dt_liberacao is not null; O resultado é (por exemplo): Quando adiciono no código and codnome.dt_liberacao = (select max(codnome2.dt_liberacao) from med_avaliacao_paciente codnome2 where codnome.cd_pessoa_fisica = codnome2.cd_pessoa_fisica) O resultado é apenas os nomes que estão repetidos (com mais de uma avaliação), quando na verdade quero trazer todos, e aqueles que tiverem mais de uma avaliação, nesse caso, trazer apenas a última liberada (dt_liberacao). Desde já, agradeço muito a ajuda!
  2. Boa tarde, Estou enfrentando um problema recorrente nas minhas queries, já tentei algumas alternativas encontradas aqui, sem sucesso. Tenho o seguinte select: select avaliacao.dt_liberacao, avaliacao.cd_pessoa_fisica, nome.nm_pessoa_fisica NOME_PCT, decode(diag.qt_resultado,871,'Desnutrição grave',872,'Desnutrição moderada',873,'Desnutrição leve', 874,'Eutrofia',875,'Sobrepeso',876,'Obesidade') from med_avaliacao_paciente avaliacao, pessoa_fisica nome, med_avaliacao_result diag where diag.nr_seq_item = 1266 and diag.nr_seq_avaliacao = avaliacao.nr_sequencia and avaliacao.cd_pessoa_fisica = nome.cd_pessoa_fisica and avaliacao.dt_liberacao is not null and ie_situacao = 'A' O que quero é trazer apenas o último registro por pessoa, um das alternativas que tentei foi dada em outro tópico pelo moderador Motta, incluindo no where o código: and avaliacao.dt_liberacao = (select max(avaliacao2.dt_liberacao) from med_avaliacao_paciente avaliacao2 where avaliacao.cd_pessoa_fisica = avaliacao2.cd_pessoa_fisica) Porém esse select só retorna um resultado... Realmente preciso entender como funciona essa lógico, porque tenho vários selects semelhantes que preciso retirar os resultados "repetidos"
×

Important Information

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