Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

asacap1000

Minutos em horas e minutos

Recommended Posts

Galera acredito que seja muito fácil mas a cabeça não ta ajudando em nada hoje, preciso pegar o resultado deste select em HH:mm.

 

Mas não consigo acertar de jeito nenhum

 

o campo é este:

 

TRUNC ((io.time_out - io.time_in)* 1440) minutos,

 

Se eu não colocar *1440 ele faz a contagem por dia.

o que está faltando neste select, já coloquei *24, /24, /60, *60 etc etc e não sai nada certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza após analisar seu link, cheguei a estes valores.A principio voltaram corretos.

 

select datas.nr_entrada,
to_char(trunc(datas.minutos / 60 / 60), '09') ||
to_char(trunc(mod(datas.minutos, 3600) / 60), '09') ||
to_char(mod(mod(datas.minutos, 3600), 60), '09')
from
(select TRUNC((io.time_out - io.time_in) * 1440) minutos ...) datas

 

está me trazendo dia hora e minutos interessante que está excluindo os finais de semana

beleza após analisar seu link, cheguei a estes valores.A principio voltaram corretos.

 

select datas.nr_entrada,
to_char(trunc(datas.minutos / 60 / 60), '09') ||
to_char(trunc(mod(datas.minutos, 3600) / 60), '09') ||
to_char(mod(mod(datas.minutos, 3600), 60), '09')
from
(select TRUNC((io.time_out - io.time_in) * 1440) minutos ...) datas

 

está me trazendo dia hora e minutos interessante que está excluindo os finais de semana

 

 

Como exemplo tenho estas datas saida (segunda) 09.02.2015 08:22:09 - entrada (sexta feira) 06.02.2015 19:22:52.

ele me retorna isso 01: 00: 59

Compartilhar este post


Link para o post
Compartilhar em outros sites
...interessante que está excluindo os finais de semana ...

 

 

¡¿?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

¡¿?!

rsrsrsr eu também não entendi.

Vou postar o select inteiro para ter idéia do rolo.

select datas.nr_entrada,datas.entrada,datas.saída,to_char(trunc(datas.minutos /60/60),'09') ||':'||
 to_char(trunc(mod(datas.minutos ,3600)/60),'09') ||':'||
 to_char(mod(mod(datas.minutos ,3600),60),'09')duração
  from (select io.id_in_out nr_entrada,
                TO_CHAR(io.time_in,'DD/MM/YYYY HH24:MI:SS')ENTRADA,                
                TO_CHAR(io.time_out,'DD/MM/YYYY HH24:MI:SS')SAÍDA,
                TRUNC ((io.time_out - io.time_in)* 1440) minutos,
                case
                  when (select p.typ_document
                          from in_out_pos p
                         where p.lager = io.lager
                           and p.id_in_out = io.id_in_out
                           and rownum = 1) in
                       ('DTA', 'DTC', 'DI', 'CARGA', 'IMP', 'MICDTA', 'TERMO') then
                   'IMPORTAÇÃO'
                  when (select p.typ_document
                          from in_out_pos p
                         where p.lager = io.lager
                           and p.id_in_out = io.id_in_out
                           and rownum = 1) is null then
                   'INDEFINIDO'
                  else
                   'EXPORTAÇÃO'
                end tp_lote,
                upper(sp.name) tranportadora,
                v.plate placa,
                case
                  when io.art_in_out = 'LI' then
                   (select we.instru_arm
                      from in_out_pos iop, we
                     where iop.lager = io.lager
                       and iop.id_in_out = io.id_in_out
                       and we.lager = iop.lager
                       and we.typ_doc = iop.typ_document
                       and we.nr_doc = iop.document
                       and we.nr_zoll = iop.container_num
                       and rownum = 1)
                  else
                   ''
                end inst_arm,
                case
                  when io.art_in_out in
                       ('ECV', 'LI', 'MIC', 'RCC', 'RCV', 'VS') then
                   'ENTRADA'
                  else
                   'SAÍDA'
                end sentido,
        decode(length(kl.suchbegriff),
              14,
              substr(kl.suchbegriff, 1, 2) || '.' ||
              substr(kl.suchbegriff, 3, 3) || '.' ||
              substr(kl.suchbegriff, 6, 3) || '/' ||
              substr(kl.suchbegriff, 9, 4) || '-' ||
              substr(kl.suchbegriff, 13, 2),
              substr(kl.suchbegriff, 1, 3) || '.' ||
              substr(kl.suchbegriff, 4, 3) || '.' ||
              substr(kl.suchbegriff, 7, 3) || '-' ||
              substr(kl.suchbegriff, 10, 2)),
                upper(kl.name) cliente,
                (select upper(s.bez)
                   from stati s
                  where s.stat_ber = 'INOUT'
                    and s.stat = io.stat
                    and rownum = 1) status,
                case
                  when io.art_in_out in
                       ('ECV', 'LI', 'MIC', 'RCC', 'RCV', 'VS') and
                       (select count(1)
                          from in_out_pos iop, we
                         where iop.lager = io.lager
                           and iop.id_in_out = io.id_in_out
                           and we.lager = iop.lager
                           and we.typ_doc = iop.typ_document
                           and we.nr_doc = iop.document
                           and we.nr_zoll = iop.container_num
                           and we.stat <> '90') = 0 then
                   'CONCLUIDO'
                  when io.art_in_out not in
                       ('ECV', 'LI', 'MIC', 'RCC', 'RCV', 'VS') and
                       (select count(1)
                          from in_out_pos iop, auftraege a
                         where iop.lager = io.lager
                           and iop.id_in_out = io.id_in_out
                           and a.lager = iop.lager
                           and replace(replace(a.hinw_zust, '/', ''), '-', '') =
                               iop.document
                           and a.art_auf = 'NORM'
                           and a.stat <= 75) = 0 then
                   'CONCLUIDO'
                  else
                   'PENDENTE'
                end status_oper
           from in_out io, vehicle v, spediteure sp, klienten kl
          where trunc
         (io.time_arrival) >= TO_DATE('&inicio','DD/MM/YYYY HH24:MI:SS')
       and trunc (io.time_arrival) <= TO_DATE('&fim','DD/MM/YYYY HH24:MI:SS')
     and io.lager = 'PSI'
       and io.stat <> '80'
       and io.lager = v.lager(+)
       and io.id_vehicle = v.id_vehicle(+)
       and io.lager = sp.lager(+)
       and io.id_spediteur = sp.id_spediteur(+)
       and io.lager = kl.lager(+)
       and io.id_klient = '&client'
       and io.id_klient = kl.id_klient(+)
          order by io.time_arrival)datas

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que é e como é gravado io.time_out ?

Se refere a data de saída ele é gravado nesta formatação

02/01/2015 17:54:14

e o io.time_in é entrada também na mesma formatação

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pensei em algo to tipo só o horário a data como que fixada

 

Vi um sistema que gravava em dois campos um para data (a hora ficava zerada) e outro para hora (a data ficava com o 1º dia do mês)

 

Não me pergunte porque, mas neste caso justificaria uma diferença de sábados/domingos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou reabrindo este chamado pois após um mês de testes encontrei um "bug". O select atual está desta forma hoje.

SELECT COUNT(CLC.TICKET) QUANT_ENTRADAS,
       decode(length(CLC.CNPJ),
              14,
              substr(CLC.CNPJ, 1, 2) || '.' || substr(CLC.CNPJ, 3, 3) || '.' ||
              substr(CLC.CNPJ, 6, 3) || '/' || substr(CLC.CNPJ, 9, 4) || '-' ||
              substr(CLC.CNPJ, 13, 2),
              substr(CLC.CNPJ, 1, 3) || '.' || substr(CLC.CNPJ, 4, 3) || '.' ||
              substr(CLC.CNPJ, 7, 3) || '-' || substr(CLC.CNPJ, 10, 2)) CNPJ,
       CLC.CLIENTE,
       to_char(trunc(sum(CLC.MINUTOS_PERCORRIDOS) / 24 / 60), '00009') || ':' ||
       to_char(trunc(mod(sum(CLC.MINUTOS_PERCORRIDOS), 3600) / 60), '09') || ':' ||
       to_char(mod(mod(sum(CLC.MINUTOS_PERCORRIDOS), 3600), 60), '09') TOTAL_PERCORRIDO,
       
       to_char(trunc(avg(NVL(CLC.MINUTOS_PERCORRIDOS, 0)) / 24 / 60),
               '0009') || ':' ||
       to_char(trunc(mod(avg(NVL(CLC.MINUTOS_PERCORRIDOS, 0)), 3600) / 60),
               '09') || ':' ||
       to_char(mod(mod(avg(NVL(CLC.MINUTOS_PERCORRIDOS, 0)), 3600), 60),
               '09') MEDIA_PERCORRIDA,
       
       to_char(trunc(max(NVL(CLC.MINUTOS_PERCORRIDOS, 0)) / 24 / 60),
               '0009') || ':' ||
       to_char(trunc(mod(max(NVL(CLC.MINUTOS_PERCORRIDOS, 0)), 3600) / 60),
               '09') || ':' ||
       to_char(mod(mod(max(NVL(CLC.MINUTOS_PERCORRIDOS, 0)), 3600), 60),
               '09') MAXIMO_PERCORRIDO,
       
       to_char(trunc(min(NVL(CLC.MINUTOS_PERCORRIDOS, 0)) / 24 / 60),
               '0009') || ':' ||
       to_char(trunc(mod(min(NVL(CLC.MINUTOS_PERCORRIDOS, 0)), 3600) / 60),
               '09') || ':' ||
       to_char(mod(mod(min(NVL(CLC.MINUTOS_PERCORRIDOS, 0)), 3600), 60),
               '09') MINIMO_PERCORRIDA
  FROM (select distinct io.id_in_out ticket,
                        k.id_klient,
                        k.suchbegriff CNPJ,
                        k.name cliente,
                        TO_CHAR(io.time_arrival, 'DD/MM/YYYY HH24:MI:SS') chegada,
                        TO_CHAR(io.time_release_in, 'DD/MM/YYYY HH24:MI:SS') liberacao,
                        TO_CHAR(io.time_in, 'DD/MM/YYYY HH24:MI:SS') entrada,
                        TO_CHAR(io.time_out, 'DD/MM/YYYY HH24:MI:SS') saida,
                        case
                          when (select max(doc.datum_integridade)
                                  from doccontrol doc, in_out_pos iop
                                 where doc.document = iop.document
                                   and iop.id_in_out = io.id_in_out) is null then
                           TRUNC((io.time_release_pp - io.time_in) * 1440)
                        
                          when (select max(doc.datum_integridade)
                                  from doccontrol doc, in_out_pos iop
                                 where doc.document = iop.document
                                   and iop.id_in_out = io.id_in_out) >
                               io.time_release_pp then
                           TRUNC(((select max(doc.datum_integridade)
                                     from doccontrol doc, in_out_pos iop
                                    where doc.document = iop.document
                                      and iop.id_in_out = io.id_in_out) -
                                 io.time_release_pp) * 1440)
                          else
                           TRUNC((io.time_release_pp -
                                 (select max(doc.datum_integridade)
                                     from doccontrol doc, in_out_pos iop
                                    where doc.document = iop.document
                                      and iop.id_in_out = io.id_in_out)) * 1440)
                        end MINUTOS_PERCORRIDOS,
                        case
                          when (select p.typ_document
                                  from in_out_pos p
                                 where p.lager = io.lager
                                   and p.id_in_out = io.id_in_out
                                   and rownum = 1) in
                               ('DTA',
                                'DTC',
                                'DI',
                                'CARGA',
                                'IMP',
                                'MICDTA',
                                'TERMO') then
                           'IMPORTAÇÃO'
                          when (select p.typ_document
                                  from in_out_pos p
                                 where p.lager = io.lager
                                   and p.id_in_out = io.id_in_out
                                   and rownum = 1) is null then
                           'INDEFINIDO'
                          else
                           'EXPORTAÇÃO'
                        end tp_lote,
                        case
                          when io.art_in_out = 'LI' then
                           (select we.instru_arm
                              from in_out_pos iop, we
                             where iop.lager = io.lager
                               and iop.id_in_out = io.id_in_out
                               and we.lager = iop.lager
                               and we.typ_doc = iop.typ_document
                               and we.nr_doc = iop.document
                               and we.nr_zoll = iop.container_num
                               and rownum = 1)
                          else
                           ''
                        end inst_arm,
                        case
                          when io.art_in_out in
                               ('ECV', 'LI', 'MIC', 'RCC', 'RCV', 'VS') then
                           'ENTRADA'
                          else
                           'SAÍDA'
                        end sentido,
                        
                        (select upper(s.bez)
                           from stati s
                          where s.stat_ber = 'INOUT'
                            and s.stat = io.stat
                            and rownum = 1) status,
                        case
                          when io.art_in_out in
                               ('ECV', 'LI', 'MIC', 'RCC', 'RCV', 'VS') and
                               (select count(1)
                                  from in_out_pos iop, we
                                 where iop.lager = io.lager
                                   and iop.id_in_out = io.id_in_out
                                   and we.lager = iop.lager
                                   and we.typ_doc = iop.typ_document
                                   and we.nr_doc = iop.document
                                   and we.nr_zoll = iop.container_num
                                   and we.stat <> '90') = 0 then
                           'CONCLUIDO'
                          when io.art_in_out not in
                               ('ECV', 'LI', 'MIC', 'RCC', 'RCV', 'VS') and
                               (select count(1)
                                  from in_out_pos iop, auftraege a
                                 where iop.lager = io.lager
                                   and iop.id_in_out = io.id_in_out
                                   and a.lager = iop.lager
                                   and replace(replace(a.hinw_zust, '/', ''),
                                               '-',
                                               '') = iop.document
                                   and a.art_auf = 'NORM'
                                   and a.stat <= 75) = 0 then
                           'CONCLUIDO'
                          else
                           'PENDENTE'
                        end status_oper
          from in_out_pos iop, klienten k, in_out io
         where k.id_klient = iop.id_klient
           and io.id_in_out = iop.id_in_out
           and io.stat <> '80'
           and (case
                 when io.art_in_out in
                      ('ECV', 'LI', 'MIC', 'RCC', 'RCV', 'VS') then
                  'ENTRADA'
                 else
                  'SAÍDA'
               end) <> 'SAÍDA'
           and trunc(io.time_arrival) >=
               TO_DATE('&inicio', 'DD/MM/YYYY HH24:MI:SS')
           and trunc(io.time_arrival) <=
               TO_DATE('&fim', 'DD/MM/YYYY HH24:MI:SS')
           and k.id_klient like '&cliente'
           AND ( case when (select p.typ_document
                                  from in_out_pos p
                                 where p.lager = io.lager
                                   and p.id_in_out = io.id_in_out
                                   and rownum = 1) in
                               ('DTA',
                                'DTC',
                                'DI',
                                'CARGA',
                                'IMP',
                                'MICDTA',
                                'TERMO') then
                           'IMPORTAÇÃO'
                          when (select p.typ_document
                                  from in_out_pos p
                                 where p.lager = io.lager
                                   and p.id_in_out = io.id_in_out
                                   and rownum = 1) is null then
                           'INDEFINIDO'
                          else
                           'EXPORTAÇÃO'
                        end) = '&tipo'
           and (case
                 when io.art_in_out = 'LI' then
                  (select we.instru_arm
                     from in_out_pos iop, we
                    where iop.lager = io.lager
                      and iop.id_in_out = io.id_in_out
                      and we.lager = iop.lager
                      and we.typ_doc = iop.typ_document
                      and we.nr_doc = iop.document
                      and we.nr_zoll = iop.container_num
                      and rownum = 1)
                 else
                  ''
               end) = '&instrucao') CLC
 GROUP BY CLC.CLIENTE,
           decode(length(CLC.CNPJ),
                 14,
                 substr(CLC.CNPJ, 1, 2) || '.' || substr(CLC.CNPJ, 3, 3) || '.' ||
                 substr(CLC.CNPJ, 6, 3) || '/' || substr(CLC.CNPJ, 9, 4) || '-' ||
                 substr(CLC.CNPJ, 13, 2),
                 substr(CLC.CNPJ, 1, 3) || '.' || substr(CLC.CNPJ, 4, 3) || '.' ||
                 substr(CLC.CNPJ, 7, 3) || '-' || substr(CLC.CNPJ, 10, 2))
 ORDER BY CLC.CLIENTE ASC

Existem casos que na consulta ele me retorna com a quantidade de horas acima de 24. Como exemplo abaixo na pesquisa de um determinado cliente ele me mostra a quantidade de entradas 15, soma o tempo total gasto no processo de cada entrada me retornando 09 dias 58 horas 33 minutos. O que deve estar errado na montagem?

 

QUANT_ENTRADAS CÓD_CLIENTE CNPJ CLIENTE TOTAL_PERCORRIDO MEDIA_PERCORRIDA MAXIMO_PERCORRIDO MINIMO_PERCORRIDO 15 códi cnpj cliente ​ 00009: 58: 33 000: 15: 54 000: 23: 21 000: 03: 05

 

 

Existe um subselect que transforma os tempos em minutos, está no case.

case
                          when (select max(doc.datum_integridade)
                                  from doccontrol doc, in_out_pos iop
                                 where doc.document = iop.document
                                   and iop.id_in_out = io.id_in_out) is null then
                           TRUNC((io.time_release_pp - io.time_in) * 1440)
                        
                          when (select max(doc.datum_integridade)
                                  from doccontrol doc, in_out_pos iop
                                 where doc.document = iop.document
                                   and iop.id_in_out = io.id_in_out) >
                               io.time_release_pp then
                           TRUNC(((select max(doc.datum_integridade)
                                     from doccontrol doc, in_out_pos iop
                                    where doc.document = iop.document
                                      and iop.id_in_out = io.id_in_out) -
                                 io.time_release_pp) * 1440)
                          else
                           TRUNC((io.time_release_pp -
                                 (select max(doc.datum_integridade)
                                     from doccontrol doc, in_out_pos iop
                                    where doc.document = iop.document
                                      and iop.id_in_out = io.id_in_out)) * 1440)
                        end MINUTOS_PERCORRIDOS,

Estou reabrindo este chamado pois após um mês de testes encontrei um "bug". O select atual está desta forma hoje.

SELECT COUNT(CLC.TICKET) QUANT_ENTRADAS,
       decode(length(CLC.CNPJ),
              14,
              substr(CLC.CNPJ, 1, 2) || '.' || substr(CLC.CNPJ, 3, 3) || '.' ||
              substr(CLC.CNPJ, 6, 3) || '/' || substr(CLC.CNPJ, 9, 4) || '-' ||
              substr(CLC.CNPJ, 13, 2),
              substr(CLC.CNPJ, 1, 3) || '.' || substr(CLC.CNPJ, 4, 3) || '.' ||
              substr(CLC.CNPJ, 7, 3) || '-' || substr(CLC.CNPJ, 10, 2)) CNPJ,
       CLC.CLIENTE,
       to_char(trunc(sum(CLC.MINUTOS_PERCORRIDOS) / 24 / 60), '00009') || ':' ||
       to_char(trunc(mod(sum(CLC.MINUTOS_PERCORRIDOS), 3600) / 60), '09') || ':' ||
       to_char(mod(mod(sum(CLC.MINUTOS_PERCORRIDOS), 3600), 60), '09') TOTAL_PERCORRIDO,
       
       to_char(trunc(avg(NVL(CLC.MINUTOS_PERCORRIDOS, 0)) / 24 / 60),
               '0009') || ':' ||
       to_char(trunc(mod(avg(NVL(CLC.MINUTOS_PERCORRIDOS, 0)), 3600) / 60),
               '09') || ':' ||
       to_char(mod(mod(avg(NVL(CLC.MINUTOS_PERCORRIDOS, 0)), 3600), 60),
               '09') MEDIA_PERCORRIDA,
       
       to_char(trunc(max(NVL(CLC.MINUTOS_PERCORRIDOS, 0)) / 24 / 60),
               '0009') || ':' ||
       to_char(trunc(mod(max(NVL(CLC.MINUTOS_PERCORRIDOS, 0)), 3600) / 60),
               '09') || ':' ||
       to_char(mod(mod(max(NVL(CLC.MINUTOS_PERCORRIDOS, 0)), 3600), 60),
               '09') MAXIMO_PERCORRIDO,
       
       to_char(trunc(min(NVL(CLC.MINUTOS_PERCORRIDOS, 0)) / 24 / 60),
               '0009') || ':' ||
       to_char(trunc(mod(min(NVL(CLC.MINUTOS_PERCORRIDOS, 0)), 3600) / 60),
               '09') || ':' ||
       to_char(mod(mod(min(NVL(CLC.MINUTOS_PERCORRIDOS, 0)), 3600), 60),
               '09') MINIMO_PERCORRIDA
  FROM (select distinct io.id_in_out ticket,
                        k.id_klient,
                        k.suchbegriff CNPJ,
                        k.name cliente,
                        TO_CHAR(io.time_arrival, 'DD/MM/YYYY HH24:MI:SS') chegada,
                        TO_CHAR(io.time_release_in, 'DD/MM/YYYY HH24:MI:SS') liberacao,
                        TO_CHAR(io.time_in, 'DD/MM/YYYY HH24:MI:SS') entrada,
                        TO_CHAR(io.time_out, 'DD/MM/YYYY HH24:MI:SS') saida,
                        case
                          when (select max(doc.datum_integridade)
                                  from doccontrol doc, in_out_pos iop
                                 where doc.document = iop.document
                                   and iop.id_in_out = io.id_in_out) is null then
                           TRUNC((io.time_release_pp - io.time_in) * 1440)
                        
                          when (select max(doc.datum_integridade)
                                  from doccontrol doc, in_out_pos iop
                                 where doc.document = iop.document
                                   and iop.id_in_out = io.id_in_out) >
                               io.time_release_pp then
                           TRUNC(((select max(doc.datum_integridade)
                                     from doccontrol doc, in_out_pos iop
                                    where doc.document = iop.document
                                      and iop.id_in_out = io.id_in_out) -
                                 io.time_release_pp) * 1440)
                          else
                           TRUNC((io.time_release_pp -
                                 (select max(doc.datum_integridade)
                                     from doccontrol doc, in_out_pos iop
                                    where doc.document = iop.document
                                      and iop.id_in_out = io.id_in_out)) * 1440)
                        end MINUTOS_PERCORRIDOS,
                        case
                          when (select p.typ_document
                                  from in_out_pos p
                                 where p.lager = io.lager
                                   and p.id_in_out = io.id_in_out
                                   and rownum = 1) in
                               ('DTA',
                                'DTC',
                                'DI',
                                'CARGA',
                                'IMP',
                                'MICDTA',
                                'TERMO') then
                           'IMPORTAÇÃO'
                          when (select p.typ_document
                                  from in_out_pos p
                                 where p.lager = io.lager
                                   and p.id_in_out = io.id_in_out
                                   and rownum = 1) is null then
                           'INDEFINIDO'
                          else
                           'EXPORTAÇÃO'
                        end tp_lote,
                        case
                          when io.art_in_out = 'LI' then
                           (select we.instru_arm
                              from in_out_pos iop, we
                             where iop.lager = io.lager
                               and iop.id_in_out = io.id_in_out
                               and we.lager = iop.lager
                               and we.typ_doc = iop.typ_document
                               and we.nr_doc = iop.document
                               and we.nr_zoll = iop.container_num
                               and rownum = 1)
                          else
                           ''
                        end inst_arm,
                        case
                          when io.art_in_out in
                               ('ECV', 'LI', 'MIC', 'RCC', 'RCV', 'VS') then
                           'ENTRADA'
                          else
                           'SAÍDA'
                        end sentido,
                        
                        (select upper(s.bez)
                           from stati s
                          where s.stat_ber = 'INOUT'
                            and s.stat = io.stat
                            and rownum = 1) status,
                        case
                          when io.art_in_out in
                               ('ECV', 'LI', 'MIC', 'RCC', 'RCV', 'VS') and
                               (select count(1)
                                  from in_out_pos iop, we
                                 where iop.lager = io.lager
                                   and iop.id_in_out = io.id_in_out
                                   and we.lager = iop.lager
                                   and we.typ_doc = iop.typ_document
                                   and we.nr_doc = iop.document
                                   and we.nr_zoll = iop.container_num
                                   and we.stat <> '90') = 0 then
                           'CONCLUIDO'
                          when io.art_in_out not in
                               ('ECV', 'LI', 'MIC', 'RCC', 'RCV', 'VS') and
                               (select count(1)
                                  from in_out_pos iop, auftraege a
                                 where iop.lager = io.lager
                                   and iop.id_in_out = io.id_in_out
                                   and a.lager = iop.lager
                                   and replace(replace(a.hinw_zust, '/', ''),
                                               '-',
                                               '') = iop.document
                                   and a.art_auf = 'NORM'
                                   and a.stat <= 75) = 0 then
                           'CONCLUIDO'
                          else
                           'PENDENTE'
                        end status_oper
          from in_out_pos iop, klienten k, in_out io
         where k.id_klient = iop.id_klient
           and io.id_in_out = iop.id_in_out
           and io.stat <> '80'
           and (case
                 when io.art_in_out in
                      ('ECV', 'LI', 'MIC', 'RCC', 'RCV', 'VS') then
                  'ENTRADA'
                 else
                  'SAÍDA'
               end) <> 'SAÍDA'
           and trunc(io.time_arrival) >=
               TO_DATE('&inicio', 'DD/MM/YYYY HH24:MI:SS')
           and trunc(io.time_arrival) <=
               TO_DATE('&fim', 'DD/MM/YYYY HH24:MI:SS')
           and k.id_klient like '&cliente'
           AND ( case when (select p.typ_document
                                  from in_out_pos p
                                 where p.lager = io.lager
                                   and p.id_in_out = io.id_in_out
                                   and rownum = 1) in
                               ('DTA',
                                'DTC',
                                'DI',
                                'CARGA',
                                'IMP',
                                'MICDTA',
                                'TERMO') then
                           'IMPORTAÇÃO'
                          when (select p.typ_document
                                  from in_out_pos p
                                 where p.lager = io.lager
                                   and p.id_in_out = io.id_in_out
                                   and rownum = 1) is null then
                           'INDEFINIDO'
                          else
                           'EXPORTAÇÃO'
                        end) = '&tipo'
           and (case
                 when io.art_in_out = 'LI' then
                  (select we.instru_arm
                     from in_out_pos iop, we
                    where iop.lager = io.lager
                      and iop.id_in_out = io.id_in_out
                      and we.lager = iop.lager
                      and we.typ_doc = iop.typ_document
                      and we.nr_doc = iop.document
                      and we.nr_zoll = iop.container_num
                      and rownum = 1)
                 else
                  ''
               end) = '&instrucao') CLC
 GROUP BY CLC.CLIENTE,
           decode(length(CLC.CNPJ),
                 14,
                 substr(CLC.CNPJ, 1, 2) || '.' || substr(CLC.CNPJ, 3, 3) || '.' ||
                 substr(CLC.CNPJ, 6, 3) || '/' || substr(CLC.CNPJ, 9, 4) || '-' ||
                 substr(CLC.CNPJ, 13, 2),
                 substr(CLC.CNPJ, 1, 3) || '.' || substr(CLC.CNPJ, 4, 3) || '.' ||
                 substr(CLC.CNPJ, 7, 3) || '-' || substr(CLC.CNPJ, 10, 2))
 ORDER BY CLC.CLIENTE ASC

Existem casos que na consulta ele me retorna com a quantidade de horas acima de 24. Como exemplo abaixo na pesquisa de um determinado cliente ele me mostra a quantidade de entradas 15, soma o tempo total gasto no processo de cada entrada me retornando 09 dias 58 horas 33 minutos. O que deve estar errado na montagem?

TOTAL ENTRADAS 15
TEMPO TOTAL EM DIAS HORAS E MINUTOS 00009: 58: 33
MÉDIA EM DIAS HORAS E MINUTOS	    000: 15: 54
MÁXIMO EM DIAS HORAS E MINUTOS	    000: 23: 21
MÍNIMO EM DIAS HORAS E MINUTOS	    000: 03: 05

Existe um subselect que transforma os tempos em minutos, está no case.

case
                          when (select max(doc.datum_integridade)
                                  from doccontrol doc, in_out_pos iop
                                 where doc.document = iop.document
                                   and iop.id_in_out = io.id_in_out) is null then
                           TRUNC((io.time_release_pp - io.time_in) * 1440)
                        
                          when (select max(doc.datum_integridade)
                                  from doccontrol doc, in_out_pos iop
                                 where doc.document = iop.document
                                   and iop.id_in_out = io.id_in_out) >
                               io.time_release_pp then
                           TRUNC(((select max(doc.datum_integridade)
                                     from doccontrol doc, in_out_pos iop
                                    where doc.document = iop.document
                                      and iop.id_in_out = io.id_in_out) -
                                 io.time_release_pp) * 1440)
                          else
                           TRUNC((io.time_release_pp -
                                 (select max(doc.datum_integridade)
                                     from doccontrol doc, in_out_pos iop
                                    where doc.document = iop.document
                                      and iop.id_in_out = io.id_in_out)) * 1440)
                        end MINUTOS_PERCORRIDOS,

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi o problema , tentou "abrir" a consulta para ver7car os valores ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então os resultados de uma certa forma estão corretos, por exemplo se eu deixar para aparecer apenas horas e minutos blz, só que se eu adicionar a opção de dias aí fica estranho a infromação pois como exemplo ele irá mostrar.

 

09:58:33 => 09 dias 58 horas e 33 minutos. Como 58 horas? Acredito que teria que ter uma regra para que no calculo de horas quando ultrapassar 23 horas ele volta a zerar porém acrescentaria nos dias

Compartilhar este post


Link para o post
Compartilhar em outros sites

to_char(mod(mod(sum(CLC.MINUTOS_PERCORRIDOS), 3600), 60), '09') TOTAL_PERCORRIDO,

 

Nao deveria ser 24 no lugar de 60 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.