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!
- 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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)