select
a.nr_atendimento,
substr(obter_min_entre_datas(a.dt_entrada, a.dt_atend_medico,null),1,50) qt_tempo_espera,
substr(obter_min_entre_datas(a.dt_atend_medico, a.dt_fim_consulta, null),1,50) qt_temp_atend,
substr(obter_nome_pf(a.cd_pessoa_fisica),1,50) nm_paciente,
substr(obter_nome_pf(a.cd_medico_resp),1,50) nm_medico,
a.dt_entrada,
a.dt_inicio_atendimento,
a.dt_fim_triagem,
a.dt_alta,
substr(obter_dif_data(a.dt_inicio_atendimento,a.dt_fim_triagem,null),1,20) teste,
substr(obter_dif_data(a.dt_entrada,a.dt_alta,null),1,20) qt_tempo_atendimento
from atendimento_paciente a
where a.dt_entrada between trunc(:dt_inicial) and fim_dia(:dt_final)
and ((:cd_setor_atendimento = obter_setor_atendimento(a.nr_atendimento)) or (:cd_setor_atendimento = '0'))
order by
a.dt_entrada
Auxílio em SQL para Relatório
Tenho um sql aqui q é a base de um relatorio do meu sistema relacionado a tempo de espera de atendimentos médicos:
na coluna - qt_tempo_espera e na coluna qt_temp_atend, preciso realizar a soma dos minutos do relatorio e ao fim das colunas exibir um total dos minutos, como poderia fazer esse sum com as substr?
-
- Rank: Programador Júnior
- Mensagens: 20
- Registrado em: Sáb, 06 Ago 2016 9:22 am
- Localização: Joinville-SC
- Contato:
Geovani Cristofolini
Consultor de Business intelligence
http://useweknow.com
Consultor de Business intelligence
http://useweknow.com
Opa!
Pelo que vi, você está usando uma função que calcula o tempo entre duas datas e retorna no formato de texto, e depois você quer somar esses dois tempos do tipo texto, é isso?
Para tomar o tempo total, porque você não usando essa função usando a.dt_entrada e a.dt_fim_consulta ?
exemplo:
Pelo que vi, você está usando uma função que calcula o tempo entre duas datas e retorna no formato de texto, e depois você quer somar esses dois tempos do tipo texto, é isso?
Para tomar o tempo total, porque você não usando essa função usando a.dt_entrada e a.dt_fim_consulta ?
exemplo:
substr(obter_min_entre_datas(a.dt_entrada, a.dt_fim_consulta,null),1,50) qt_tempo_total
Opa Geovani,
então mano é isso mesmo, preciso exibir a soma nas duas funções, fiz dessa forma porque preciso dos dados das duas colunas separas, a primeira exibe o tempo em minutos que o medico demorou para chamar a paciente desde sua entrada no hospital, e o outro exibe o tempo que o medico demorou para atender a paciente depois da chamada ate a hora da alta.
se puder se dar uma força em como posso fazer essa somatoria do total de cada coluna separado te agradeço, porque preciso exibir esses dados em uma reuniao dia 5/9
valeu abração.
então mano é isso mesmo, preciso exibir a soma nas duas funções, fiz dessa forma porque preciso dos dados das duas colunas separas, a primeira exibe o tempo em minutos que o medico demorou para chamar a paciente desde sua entrada no hospital, e o outro exibe o tempo que o medico demorou para atender a paciente depois da chamada ate a hora da alta.
se puder se dar uma força em como posso fazer essa somatoria do total de cada coluna separado te agradeço, porque preciso exibir esses dados em uma reuniao dia 5/9
valeu abração.
-
- Rank: Programador Júnior
- Mensagens: 20
- Registrado em: Sáb, 06 Ago 2016 9:22 am
- Localização: Joinville-SC
- Contato:
Geovani Cristofolini
Consultor de Business intelligence
http://useweknow.com
Consultor de Business intelligence
http://useweknow.com
Veja se assim que você precisa:
trunc((((a.dt_atend_medico - a.dt_entrada) + (a.dt_fim_consulta - a.dt_atend_medico)) * 86400)/3600) hora,
trunc(mod(((((a.dt_atend_medico - a.dt_entrada) + (a.dt_fim_consulta - a.dt_atend_medico)) * 86400)/60),60)) minuto,
lpad(trunc((((a.dt_atend_medico - a.dt_entrada) + (a.dt_fim_consulta - a.dt_atend_medico)) * 86400)/3600),2,0) ||':'||
lpad(trunc(mod(((((a.dt_atend_medico - a.dt_entrada) + (a.dt_fim_consulta - a.dt_atend_medico)) * 86400)/60),60)),2,0) hhmm
Bom dia Geovani,
apliquei o código em meu sql, porém não realizou a calculo total das colunas, acho que apliquei o código no lugar errado do sql, poderia me informar em qual parte do sql aplico a codificação, só para ver se eu apliquei no lugar certo.
Muito Obrigado
Abraço
apliquei o código em meu sql, porém não realizou a calculo total das colunas, acho que apliquei o código no lugar errado do sql, poderia me informar em qual parte do sql aplico a codificação, só para ver se eu apliquei no lugar certo.
Muito Obrigado
Abraço
-
- Rank: Programador Júnior
- Mensagens: 20
- Registrado em: Sáb, 06 Ago 2016 9:22 am
- Localização: Joinville-SC
- Contato:
Geovani Cristofolini
Consultor de Business intelligence
http://useweknow.com
Consultor de Business intelligence
http://useweknow.com
Basta incluir os campos abaixo, segue o código:
select
a.nr_atendimento,
substr(obter_min_entre_datas(a.dt_entrada,a.dt_atend_medico,null),1,50) qt_tempo_espera,
substr(obter_min_entre_datas(a.dt_atend_medico,a.dt_fim_consulta,null),1,50) qt_temp_atend,
substr(obter_nome_pf(a.cd_pessoa_fisica),1,50) nm_paciente,
substr(obter_nome_pf(a.cd_medico_resp),1,50) nm_medico,
a.dt_entrada,
a.dt_inicio_atendimento,
a.dt_fim_triagem,
a.dt_alta,
substr(obter_dif_data(a.dt_inicio_atendimento,a.dt_fim_triagem,null),1,20) teste,
substr(obter_dif_data(a.dt_entrada,a.dt_alta,null),1,20) qt_tempo_atendimento,
trunc((((a.dt_atend_medico - a.dt_entrada) + (a.dt_fim_consulta - a.dt_atend_medico)) * 86400)/3600) hora,
trunc(mod(((((a.dt_atend_medico - a.dt_entrada) + (a.dt_fim_consulta - a.dt_atend_medico)) * 86400)/60),60)) minuto,
lpad(trunc((((a.dt_atend_medico - a.dt_entrada) + (a.dt_fim_consulta - a.dt_atend_medico)) * 86400)/3600),2,0) ||':'||
lpad(trunc(mod(((((a.dt_atend_medico - a.dt_entrada) + (a.dt_fim_consulta - a.dt_atend_medico)) * 86400)/60),60)),2,0) hhmm
from
atendimento_paciente a
where
a.dt_entrada between trunc(:dt_inicial) and fim_dia(:dt_final)
and (:cd_setor_atendimento = obter_setor_atendimento(a.nr_atendimento) or :cd_setor_atendimento = '0')
order by
a.dt_entrada
eitaaa geovani
descobri o problema mano, o meu relatório só consegue somar valores numerics, por isso não está dando certo, preciso converter os valores das duas colunas
para um valor numerico ai assim consigo faz o total, sabes como realizar essa mudança ? sei que o campo das data é date.
abraçãoo
descobri o problema mano, o meu relatório só consegue somar valores numerics, por isso não está dando certo, preciso converter os valores das duas colunas
substr(obter_min_entre_datas(a.dt_entrada,a.dt_atend_medico,null),1,50) qt_tempo_espera,
substr(obter_min_entre_datas(a.dt_atend_medico,a.dt_fim_consulta,null),1,50) qt_temp_atend,
abraçãoo
-
- Rank: Programador Júnior
- Mensagens: 20
- Registrado em: Sáb, 06 Ago 2016 9:22 am
- Localização: Joinville-SC
- Contato:
Geovani Cristofolini
Consultor de Business intelligence
http://useweknow.com
Consultor de Business intelligence
http://useweknow.com
Não estou entendo o que você precisa.
Essa função obter_min_entre_datas retorna em qual formato? se for numérico basta somar:
Essa função obter_min_entre_datas retorna em qual formato? se for numérico basta somar:
substr(obter_min_entre_datas(a.dt_entrada,a.dt_atend_medico,null),1,50) +
substr(obter_min_entre_datas(a.dt_atend_medico,a.dt_fim_consulta,null),1,50)
Assim geovani, veja se isso é possivel,
essa função OBTER os dois campos que estou utilizando a.dt_entrada e a.dt_atend_medico ambos são do tipo DATE logo a coluna QT_TEMPO_ESPERA também é DATE, precisaria converter o dado antes de ser mostrado na coluna para tipo NUMBER que ai consigo realizar a soma da coluna toda pelo meu proprio gerenciador do relatorio do sistema.
conseguiu me entender?
kkkkk
substr(obter_min_entre_datas(a.dt_entrada,a.dt_atend_medico,null),1,50) qt_tempo_espera
essa função OBTER os dois campos que estou utilizando a.dt_entrada e a.dt_atend_medico ambos são do tipo DATE logo a coluna QT_TEMPO_ESPERA também é DATE, precisaria converter o dado antes de ser mostrado na coluna para tipo NUMBER que ai consigo realizar a soma da coluna toda pelo meu proprio gerenciador do relatorio do sistema.
conseguiu me entender?
kkkkk
-
- Rank: Programador Júnior
- Mensagens: 20
- Registrado em: Sáb, 06 Ago 2016 9:22 am
- Localização: Joinville-SC
- Contato:
Geovani Cristofolini
Consultor de Business intelligence
http://useweknow.com
Consultor de Business intelligence
http://useweknow.com
Você tem certeza que o retorno é uma data? pelo nome da função parece que retorna um número, rsrsrs.
Passa a função para entendermos melhor.
Se retorna mesmo uma data, basta multiplicar por 86400 para converter em segundos.
Ex:
Passa a função para entendermos melhor.
Se retorna mesmo uma data, basta multiplicar por 86400 para converter em segundos.
Ex:
obter_min_entre_datas(a.dt_entrada,a.dt_atend_medico,null) * 86400 qt_tempo_espera
-
- Rank: DBA Pleno
- Mensagens: 232
- Registrado em: Ter, 19 Jun 2007 2:12 pm
- Localização: São Paulo - SP
Bom dia,
Veja se esta função ajuda alguma coisa.
Pra trazer o total em minutos precisa tratar os resultados.
Hora * 60
Dias * 1440
Veja se esta função ajuda alguma coisa.
create or replace
function Fn_Intervalo_Tempo (P_Dt_Inic in date,
P_Dt_Fina in date) return varchar2 is
v_inte number;
v_Hora varchar2(200);
--
cursor c is
SELECT lpad( extract (day from numtodsinterval(v_inte, 'day')) ,5,' ') Qt_Dias,
lpad( extract (hour from numtodsinterval(v_inte, 'day')) ,2,'0') Qt_Horas,
lpad( extract (minute from numtodsinterval(v_inte, 'day' )) ,2,'0') Qt_Minutos,
lpad( extract (second from numtodsinterval(v_inte, 'day')) ,2,'0') Qt_Segundos
FROM dual;
c_r c%rowtype;
--
begin
--
v_inte := trunc((p_dt_Fina - p_dt_Inic),6);
dbms_output.put_line('v_inte '||to_char(v_inte));
--
open c;
fetch c into c_r;
if c%found then
--
dbms_output.put_line('c_r.Qt_Dias '||c_r.Qt_Dias);
dbms_output.put_line('c_r.Qt_Horas '||c_r.Qt_Horas);
dbms_output.put_line('c_r.Qt_Minutos '||c_r.Qt_Minutos);
dbms_output.put_line('c_r.Qt_Segundos '||lpad(trunc(c_r.Qt_Segundos),2,'0'));
--
v_hora := c_r.Qt_Dias||' '||c_r.Qt_Horas||':'||c_r.Qt_Minutos||':'||lpad(trunc(c_r.Qt_Segundos),2,'0');
end if;
close c;
return v_hora;
exception
when others then
return 'erro';
End;
/
Hora * 60
Dias * 1440
Pessoal agradeço pelas dicas, mas nada resolveu meu problema, vou tentar realizar de uma outra forma o ajuste.
obrigado
obrigado
-
- Rank: Programador Júnior
- Mensagens: 20
- Registrado em: Sáb, 06 Ago 2016 9:22 am
- Localização: Joinville-SC
- Contato:
Geovani Cristofolini
Consultor de Business intelligence
http://useweknow.com
Consultor de Business intelligence
http://useweknow.com
jiopra,
Acho que não conseguimos porque não ficou claro exatamente o que você precisa, mas acredito que as dicas e funções passadas aqui você conseguirá.
Valeu!
Acho que não conseguimos porque não ficou claro exatamente o que você precisa, mas acredito que as dicas e funções passadas aqui você conseguirá.
Valeu!
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes