PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Preciso fazer com que um resultado sobreponha o outro #564048

13/10/2016

0

Este código postado retorna as cargas de um determinado entregador e informa se naquela carga houve alguma devolução, sejam elas parciais , totais ou se não houve ocorrência, porem eu preciso contar as informações por ocorrência, ou seja, eu preciso saber quantas cargas foram devolvidas de forma parcial, de forma total e que não foram devolvidas (sem ocorrência), o problema se dar pelo fato de: quando no mesmo dia houver mais de uma carga e que uma seja devolvida total e a outra parcial, a carga total irá sobrepor a parcial, com isto, vamos supor o seguinte:
- digamos que o resultado seja: 01/09 uma carga parcial, 02/09 uma carga total, no dia 03/09 uma carga parcial e uma carga total, porem pelo fato da carga total sobrepor a parcial, esta parcial não seria contabilizada então no total eu teria 1 carga parcial e duas cargas totais. Como resolvo isto?

Desde já agradeço a ajuda de vcs!


select t.entregador, 
       t.tipo_devol,
       count(t.tipo_devol),
       t.datageracao
 from 
(select distinct ex.seqentregador ||' - '|| ge.fantasia as  entregador,
                 trunc(ex.dtahorgeracao) as datageracao,
                 (case  when sum(nfi.vlritem) = sum(dp.vlritem) then 'TOTAL'
                        when sum(nfi.vlritem) != sum(dp.vlritem) then 'PARCIAL'
                   end) as tipo_devol
  from mrl_cargaexped ex
  left join mrl_cargadevdocto cd
    on ex.nrocarga = cd.nrocarga
  left join mrl_cargadevprod dp
    on dp.nrocarga = cd.nrocarga
  left join mlf_notafiscal nf
    on nf.nrocargaexped = ex.nrocarga
  left join mlf_nfitem nfi
    on nfi.numeronf = nf.numeronf
  left join ge_pessoa ge on ge.seqpessoa   =   ex.seqentregador
 where trunc(ex.dtahorgeracao) between '21-Aug-16' and '20-Sep-16'
   and ex.seqentregador        is not null
   and ex.seqentregador = 11542

 group by ex.seqentregador, ge.fantasia, ex.dtahorgeracao
 order by 1
) t

where t.tipo_devol is not null
  and t.entregador is not null

group by t.entregador, t.tipo_devol, t.datageracao

union all

select t.entregador,
       decode(t.tipo_devol, null , 'SEM OCORRENCIA'),
       count(trunc(t.datageracao)),
       t.datageracao    
from
(select distinct ex.seqentregador ||' - '|| ge.fantasia as entregador,
                 trunc(ex.dtahorgeracao) as datageracao,
                (case when sum(nfi.vlritem) = sum(dp.vlritem) then 'TOTAL'
                      when sum(nfi.vlritem) != sum(dp.vlritem) then 'PARCIAL'
                  end) as tipo_devol
   from mrl_cargaexped ex
  left join mrl_cargadevdocto cd
    on ex.nrocarga = cd.nrocarga
  left join mrl_cargadevprod dp
    on dp.nrocarga = cd.nrocarga
  left join mlf_notafiscal nf
    on nf.nrocargaexped = ex.nrocarga
  left join mlf_nfitem nfi
    on nfi.numeronf = nf.numeronf
  left join ge_pessoa ge on ge.seqpessoa   =   ex.seqentregador
 where trunc(ex.dtahorgeracao) between '21-Aug-16' and '20-Sep-16'
   and ex.seqentregador        is not null
   and ex.seqentregador = 11542

 group by ex.seqentregador, ge.fantasia, ex.dtahorgeracao
 order by 1
) t

where t.tipo_devol is null

group by t.entregador, t.tipo_devol, t.datageracao

order by 4
Gustavo Silva

Gustavo Silva

Responder

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

Aceitar