Oracle - Exibir os atendimentos com tempo de retorno igual ou menor do que 40 dias

18/12/2017

0

Boa Tarde Amigos e mestres,

Estou em fase de aprendizagem em banco de dados, onde estou tentando criar um select e estou com dificuldade. criei uma base de teste de atendimentos, onde o nome é 'Atendimento' e neste existe uma coluna chamada 'dt_atendimento'. Preciso criar uma consulta, que me retorno os atendimentos que tiveram retorno com data menor ou igual a 40 dias

Nome Tabela: Atendimento
Chave primaria: cd_atendimento
chave estrangeira: cd_paciente
campo Data: dt_atendimento
Relacionamento 1...N, ou seja, um paciente pode ter varias atendimentos
Felipe Silva

Felipe Silva

Responder

Posts

19/12/2017

Luiz Vichiatto

Faça o select normal, como se a consulta para todas as consultas, depois coloque a clausula where comparando a dt_atendimento, com a data de hoje diminuindo 40 dias, ficando similar a isto (confira o código)
select ate.cd_atendimento, ate.dt_atendimento, pac.NOME, pac.dt_nascimento 
from ATENDIMENTO ate
inner join PACIENTE pac on pac.cd_paciente = ate.cd_paciente
where ate.dt_atendimento >= (dt_atendimento - 40)


Responder

19/12/2017

Felipe Silva

Boa Tarde Luiz,

Estava tentando chegar a seu raciocínio, porem acredito que não satisfaça ao que quero, pois pelo que intendi seu select irá selecionar todos os atendimentos que foram realizados de 40 dias atrás até a data de hoje, correto? Na verdade o que quero é, listar todos os atendimentos que o intervalo entre um e outro foram menor do que 40 dias, independente da data, ou seja, poderá trazer um atendimento do ano passado que teve menos de 40 dias de intervalos entre eles, do mesmo paciente. Estou apanhando feio aqui.
Responder

20/12/2017

Luiz Vichiatto

Então o que você quer é a diferença entre o agendamento e o atendimento da consulta, neste caso você terá que ter a diferença entre a data do agendamento e a data do atendimento maior que 40 dias.
Nas sua questão inicial você não mencionou a data da consulta, apenas a data do atendimento, neste caso fica assim
Para o exemplo DT_AGENDAMENTO foi indicado pois não sei o campo que corresponde.

select ate.cd_atendimento, ate.dt_atendimento, pac.NOME, pac.dt_nascimento 
from ATENDIMENTO ate
inner join PACIENTE pac on pac.cd_paciente = ate.cd_paciente
where (ate.dt_atendimento - ate.DT_AGENDAMENTO) >=  40



Se preferir procure mais detalhes em
http://aprendaplsql.com
http://glufke.net
https://www.devmedia.com.br/guia/oracle/34365

Boa Tarde Luiz,

Estava tentando chegar a seu raciocínio, porem acredito que não satisfaça ao que quero, pois pelo que intendi seu select irá selecionar todos os atendimentos que foram realizados de 40 dias atrás até a data de hoje, correto? Na verdade o que quero é, listar todos os atendimentos que o intervalo entre um e outro foram menor do que 40 dias, independente da data, ou seja, poderá trazer um atendimento do ano passado que teve menos de 40 dias de intervalos entre eles, do mesmo paciente. Estou apanhando feio aqui.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar