Somar campo usando Union

Delphi

01/04/2004

Tenho uma pesquisa da seguinte forma

select CODIGO, NOME, QUANTIDADE from Vendas
UNION
select CODIGO, NOME, QUANTIDADE from Compras

CONTEUDO DAS TABELAS:
VENDAS
01 TELEFONE 1 (CODIGO, NOME, QUANTIDADE)
COMPRAS
01 TELEFONE 1 (CODIGO, NOME, QUANTIDADE)

Ou seja, tenho registros iguais para as duas tabelas. Eu preciso que o resultado da pesquisa some a quantidade em produtos iguais. Ex.
01 TELEFONE 2

Se eu utilizar apenas UNION ele mostra só um registro e se utilizar UNION ALL ele mostra os dois registros.

Alguem tem alguma dica???

Obrigado,


Mcd

Mcd

Curtidas 0

Melhor post

Kotho

Kotho

01/04/2004

se o banco for firebird, faça assim:

select CODIGO, NOME, SUM(QUANTIDADE)
from (
select CODIGO, NOME, QUANTIDADE from Vendas
UNION
select CODIGO, NOME, QUANTIDADE from Compras
)
group by CODIGO, NOME

se for access, crie uma consulta com o select interno...

se for paradox... se mate.... hehehehe :lol:


GOSTEI 1

Mais Respostas

Mcd

Mcd

01/04/2004

Desculpe, postei no fórum errado. Mas mesmo assim se aguem puder me dar uma dica agradeço....


GOSTEI 0
Mcd

Mcd

01/04/2004

Meu banco é Firebird 1.0 e fiz uma simulação conforme vocêm mencionou, porém dá erro dizendo que não conhece o caracter após o primeiro from...

Alguma idéia do que pode ter dado errado ?

Obrigado...


GOSTEI 0
Kotho

Kotho

01/04/2004

eu sempre esqueco que o Firebird não suporta esse tipo de select, mas tem um jeito...

crie uma VIEW como comando:

CREATE VIEW NOME_DA_VIEW AS SELECT...


da faça:

SELECT ... FROM NOME_DA_VIEW ...



GOSTEI 1
Matheus Neves

Matheus Neves

01/04/2004

Bom dia,
estou seguido se raciocino se somar usando union, mas esta dando erro:
ERROR: syntax error at or near "group"
LINE 6: group by mes
^
********** Error **********

ERROR: syntax error at or near "group"
SQL state: 42601
Character: 293


olha com esta meu codigo:
select extract(month from data_emissao)as mes, sum(1*valor)
from(select extract(month from data_emissao), valor
from financeiro_entradas where data_baixa is not null) f union all
(select extract(month from data_emissao), valor*(-1)
from financeiro_saidas where data_baixa is not null)
group by mes
order by mes
GOSTEI 0
POSTAR