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

SQL

Oracle

18/12/2017

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

Curtidas 0

Respostas

Luiz Vichiatto

Luiz Vichiatto

18/12/2017

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)


GOSTEI 0
Felipe Silva

Felipe Silva

18/12/2017

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.
GOSTEI 0
Luiz Vichiatto

Luiz Vichiatto

18/12/2017

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.
GOSTEI 0
POSTAR