Pessoal, bom dia!
Estou precisando montar um relatório que funciona da seguinte maneira:
Preciso retornar os valores dentro do período de 2 datas de tabelas distintas, essas que sejam no período máximo de 12 horas entre elas. Até aí beleza, já consegui esse resultado que está mais ou menos assim:
Nome | Tipo Atendimento | Data Entrada (tabela x) | Data Encaminhamento (tabela y)
O problema é que a Data de Entrada e a Data de Encaminhamento podem ter muitos dias e até meses entre elas, e eu preciso que o resultado me retorne somente os que não ultrapassem 30 dias de diferença entre elas.
Vamos ser se eu entendi então: Eu teria que criar duas tabelas pra guardar os registros, uma pra Data Entrada e outra pra Data Encaminhamento, e depois disso fazer um select nessa nova tabela onde a condição vai ser a igualdade das IDs e Data Entrada - Data Encaminhamento menores que 30. Seria isso?
Na sua questão original, eu tinha entendido que você tinha 2 tabelas, e respondi baseado nisso. Mas você não é obrigado a criar 2 tabelas se não precisa, pode fazer tudo em uma só. A subtração independe das tabelas envolvidas, basta que os campos sejam tipo date (ou similares).
O SQLFiddle às vezes dá uns erros mesmo. Tente de novo após alguns minutos. Mas o código que está lá é o mesmo que colei aqui, então você pode criar essas tabelas de teste no seu banco e testar o SQL. Foi só pra exemplificar.
Abraço.
J
juliano93
Entendi!
No meu select, uma das condições é que essas duas datas tenham mais de 12 horas depois de serem subtraídas, e está assim: AND To_Date (To_Char(urgencia.dt_atendimento,'dd/mm/yyyy')||To_Char(urgencia.hr_atendimento,'hh24:mi'),'dd/mm/yyyy hh24:mi') - To_Date (To_Char(atendime.dt_atendimento,'dd/mm/yyyy')||To_Char(atendime.hr_atendimento,'hh24:mi'),'dd/mm/yyyy hh24:mi') > 0.5
Até aí ok, mas além disso elas precisam ser menores que 30 dias. Ou seja, maiores que doze horas e menores que trinta dias.
Eu pensei sei lá, colocar uma variável pra receber essa condição das 12 horas e depois condiciona-la a ser menor que 30 dias, mas não ta rolando.
T
TerraSkilll1 like
Que campos de quais tabelas você precisa verificar o intervalo de 30 dias? Ou é referente ao dia atual?
Supondo que dt_atendimento seja um campo date, você só precisa adicionar a nova condição num novo and. Pra ficar mais claro, você pode separar agrupar tudo com parênteses. Algo mais ou menos assim:
AND(-- sua verificacao atualTo_Date(To_Char(urgencia.dt_atendimento,'dd/mm/yyyy')||To_Char(urgencia.hr_atendimento,'hh24:mi'),'dd/mm/yyyy hh24:mi')-To_Date(To_Char(atendime.dt_atendimento,'dd/mm/yyyy')||To_Char(atendime.hr_atendimento,'hh24:mi'),'dd/mm/yyyy hh24:mi')>0.5)AND(-- verifica os 30 dias, basicamente o que eu já tinha sugerido antes(atendime.dt_atendimento-urgencia.dt_atendimento)<30)
Abraço.
J
juliano93
Deu certíssimo! A lógica é mais simples so que eu tava tentando fazer haha. Muito obrigado