Fórum Ajuda com union all #477591
29/04/2014
0
Mais ao executar o código apresenta o seguinte resultado:
Exemplo:
Nome: Valor:
José 100
Maria 50
José -20
Maria -10
Eu gostaria que o resultado da pesquisa fique assim:
José 80
Maria 40
Segue o código que fiz:
select
fun.nome as consultor,
sum ((pe.total_liquido + pe.v_ipi) - pe.desc_suframa) as VL_PRODUTO
from produtos_eventos pe
inner join produtos p on p.produto = pe.produto
inner join saidas s on s.saida = pe.cod_operacao
inner join cfop cf on cf.cfop = pe.cfop
left join funcionarios fun on fun.funcionario = s.funcionario
where s.data BETWEEN ''02/01/14'' AND ''02/28/14''
and pe.quantidade <> 0
and cf.nat_operacao in(''5.101'',''6.101'',''5.102'',''6.102'',''6.107'',''5.551'',''6.551'',''5.933'',''6.933'',''7.551'',''6.108'',''6.109'',''6.110'',''7.101'',''7.102'')
group by fun.nome
union all
select
fun.nome as consultor,
sum ((pe.total_liquido + pe.v_ipi) - pe.desc_suframa)* -1 as VL_PRODUTO
from produtos_eventos pe
inner join produtos p on p.produto = pe.produto
inner join entradas en on en.entrada = pe.cod_operacao and pe.tipo_operacao = en.tipo_operacao_e and en.cancelada = ''F''
inner join cfop cf on cf.cfop = pe.cfop
left join funcionarios fun on fun.funcionario = en.funcionario
where en.data BETWEEN ''02/01/14'' AND ''02/28/14''
and cf.nat_operacao in(''1.201'',''2.201'',''1.202'',''2.202'',''2.203'',''3.201'',''3.202'')
group by fun.nome
union all
select
fun.nome as consultor,
sum ((pe.total_liquido + pe.v_ipi) - pe.desc_suframa)* -1 as VL_PRODUTO
from produtos_eventos pe
inner join produtos p on p.produto = pe.produto
inner join entradas en on en.entrada = pe.cod_operacao and pe.tipo_operacao = en.tipo_operacao_e and en.cancelada = ''F''
inner join cfop cf on cf.cfop = pe.cfop
left join funcionarios fun on fun.funcionario = en.funcionario
where en.data BETWEEN ''02/01/14'' AND ''02/28/14''
and cf.cfop in(''107'',''125'',''153'',''155'')
group by fun.nome;
Alguém poderia me ajudar com esse código]?
Giuliano Santos
Curtir tópico
+ 1Posts
30/04/2014
Alex Lekao
Como ficou o resultado? seria possivel posta-lo?
Nao sei se eh possivel com o Firebird mas vc ja experimentou coloca esse codigo todo em uma especie de tabela temporaria e fazer os calculos nela para ver se funciona?
Abraco.
Alex - Lekao
Gostei + 0
30/04/2014
Giuliano Santos
consegui resolver esse problema agora pouco utilizando subquery. O código ficou assim:
select consultor,
sum (VL_PRODUTO)
from
(
select
fun.nome as consultor,
sum ((pe.total_liquido + pe.v_ipi) - pe.desc_suframa) as VL_PRODUTO
from produtos_eventos pe
inner join produtos p on p.produto = pe.produto
inner join saidas s on s.saida = pe.cod_operacao
inner join cfop cf on cf.cfop = pe.cfop
left join funcionarios fun on fun.funcionario = s.funcionario
where s.data BETWEEN '02/01/14' AND '02/28/14'
and pe.quantidade <> 0
and cf.nat_operacao in('5.101','6.101','5.102','6.102','6.107','5.551','6.551','5.933','6.933','7.551','6.108','6.109','6.110','7.101','7.102')
group by fun.nome
union all
select
fun.nome as consultor,
sum ((pe.total_liquido + pe.v_ipi) - pe.desc_suframa)* -1 as VL_PRODUTO
from produtos_eventos pe
inner join produtos p on p.produto = pe.produto
inner join entradas en on en.entrada = pe.cod_operacao and pe.tipo_operacao = en.tipo_operacao_e and en.cancelada = 'F'
inner join cfop cf on cf.cfop = pe.cfop
left join funcionarios fun on fun.funcionario = en.funcionario
where en.data BETWEEN '02/01/14' AND '02/28/14'
and cf.nat_operacao in('1.201','2.201','1.202','2.202','2.203','3.201','3.202')
group by fun.nome
union all
select
fun.nome as consultor,
sum ((pe.total_liquido + pe.v_ipi) - pe.desc_suframa)* -1 as VL_PRODUTO
from produtos_eventos pe
inner join produtos p on p.produto = pe.produto
inner join entradas en on en.entrada = pe.cod_operacao and pe.tipo_operacao = en.tipo_operacao_e and en.cancelada = 'F'
inner join cfop cf on cf.cfop = pe.cfop
left join funcionarios fun on fun.funcionario = en.funcionario
where en.data BETWEEN '02/01/14' AND '02/28/14'
and cf.cfop in('107','125','153','155')
group by fun.nome
) virtual
group by consultor
Gostei + 0
30/04/2014
Alex Lekao
era justamente isso que ia te sugerir fazer, eu nao sabia que dava certo com Firebird. rsrsr
Eu uso muito esse recurso no SQL Server. rsrsr
Que bom que deu certo. Parabens!!!
obrigado por postar a solucao.
Abraco.
Alex - Lekao
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)