Acho que você esta se confundindo no conceito de UNION.

Essas são operações de Conjunto, ou seja, Unem os conjuntos retornados por
seus selects. Operações de Conjunto não fazem operações aritméticas.

Uma forma de obter o resultado que você precisa seria justamente incluir
seu select como "source" dos dados em uma inner query. Algo assim:


select cod, departamento, sum(valor) valor
from
(select cod, departamento, valor from tabela1
union
select cod, departamento, valor from tabela2)
group by cod, departamento;


Evandro Giachetto
Oracle DBA
evandrogiache...@gmail.com



Em 16 de abril de 2014 11:30, <pedro.meneg...@plmf.com.br> escreveu:

>
>
> Olá Pessoal,
>
>
> Sou novato no grupo e também no Oracle e tenho uma dúvida que pode ser
> simples para os colegas mais está me atormentando.
>
> Tenho um select com vários UNIONS que são necessários para trazer os dados
> que preciso. O problema é que os alguns dados estão aparecendo de forma
> duplicada. A sentença está trazendo os dados da seguinte forma:
>
> cod departamento valor
> 3 Financeiro - 200
> 3 Financeiro 300
>
> O correto seria trazer da seguinte forma:
>
> cod departamento valor
> 3 Financeiro 100
>
> Teria que trazer apenas uma vez o nome do departamento e efetuar a soma
> dos valores, sendo -200 + 300 = 100.
>
> Alguém poderia me ajudar nessa dúvida?
>
> Obrigado!
>
>  
>

Responder a