soma IBOQUERY com duplicidade
help.....
estou usando DELPHI e FIREBIRD
tenho uma tabela com CODIGO QUANTIDADE EMISSAO
tenho outra tabela com CODIGO QUANTIDADE DATA
preciso DEFINIR POR PERIODO, CODIGO e somar as quantidades das duas tabelas
estou usando IBOQUERY
UNION / UNION ALL/ INNER JOIN as funções monstram valores errados e duplicados
alguém pode me socorrer....
obrigada
estou usando DELPHI e FIREBIRD
tenho uma tabela com CODIGO QUANTIDADE EMISSAO
tenho outra tabela com CODIGO QUANTIDADE DATA
preciso DEFINIR POR PERIODO, CODIGO e somar as quantidades das duas tabelas
estou usando IBOQUERY
UNION / UNION ALL/ INNER JOIN as funções monstram valores errados e duplicados
alguém pode me socorrer....
obrigada
Cristiane
Curtidas 0
Melhor post
Renato Rubinho
25/11/2014
Buenas,
Caso as tabelas não tenham relacionamento e você apenas precise da soma das quantidades independentes, segue um exemplo de um UNION ALL do SUM() de cada tabela resultando um sub-select para um novo SUM()
Abraççç,
rrubinho
Caso as tabelas não tenham relacionamento e você apenas precise da soma das quantidades independentes, segue um exemplo de um UNION ALL do SUM() de cada tabela resultando um sub-select para um novo SUM()
SELECT SUM(SOMA) FROM ( SELECT SUM(TAB1.QUANTIDADE) SOMA FROM TABELA1 TAB1 WHERE TAB1.CODIGO BETWEEN 1 AND 10 AND TAB1.EMISSAO BETWEEN '01.11.2014' AND '25.11.2014' UNION ALL SELECT SUM(TAB2.QUANTIDADE) SOMA FROM TABELA2 TAB2 WHERE TAB2.CODIGO BETWEEN 1 AND 10 AND TAB2.DATA BETWEEN '01.11.2014' AND '25.11.2014' )
Abraççç,
rrubinho
GOSTEI 1
Mais Respostas
Cristiane
25/11/2014
rrubinho
obrigada pela atenção
copiei seu code, esta dando erro
usei parte dele assim:
SELECT T1.CODIGO, SUM(T1.QTD) AS TOT1 FROM ITEVENDAS T1
GROUP BY T1.CODIGO
UNION ALL
SELECT T2.CODIGO, SUM(T2.QTD) AS TOT2 FROM ITEVENDAS_ECF T2
GROUP BY T2.CODIGO
resultado
so aparece a soma da primeira tabela
estou fazendo uma consulta, no dbgrid so aparece o TOT1
são duas tabelas uma de nota fiscal e outra de cupom fiscal
preciso fazer uma consulta definindo um período x onde some todas as vendas do produto tanto da nota fiscal quanto do ecf
tem situação em que existe venda de nota fiscal e não tem de cupom fiscal e vice versa
estou a uma semana tentando montar esta consulta e não consigo, usei o INNER JOIN além de duplicar ele soma errado
se vc puder me ajudar.... agradeço imensamente....
obrigada pela atenção
copiei seu code, esta dando erro
usei parte dele assim:
SELECT T1.CODIGO, SUM(T1.QTD) AS TOT1 FROM ITEVENDAS T1
GROUP BY T1.CODIGO
UNION ALL
SELECT T2.CODIGO, SUM(T2.QTD) AS TOT2 FROM ITEVENDAS_ECF T2
GROUP BY T2.CODIGO
resultado
so aparece a soma da primeira tabela
estou fazendo uma consulta, no dbgrid so aparece o TOT1
são duas tabelas uma de nota fiscal e outra de cupom fiscal
preciso fazer uma consulta definindo um período x onde some todas as vendas do produto tanto da nota fiscal quanto do ecf
tem situação em que existe venda de nota fiscal e não tem de cupom fiscal e vice versa
estou a uma semana tentando montar esta consulta e não consigo, usei o INNER JOIN além de duplicar ele soma errado
se vc puder me ajudar.... agradeço imensamente....
GOSTEI 0
Renato Rubinho
25/11/2014
Só escrevi os comandos sem testar. Que erro deu ?
O comando que você fez irá resultar duas linhas.
Precisa utilizá-lo como uma sub-query e dar um sum das quantidades de novo.
Obs: os alias que você colocar tem que ser os mesmos para as quantidades, conforme abaixo.
Abraççç
rrubinho
O comando que você fez irá resultar duas linhas.
Precisa utilizá-lo como uma sub-query e dar um sum das quantidades de novo.
Obs: os alias que você colocar tem que ser os mesmos para as quantidades, conforme abaixo.
SELECT SUM(TOT) FROM ( SELECT T1.CODIGO, SUM(T1.QTD) AS TOT FROM ITEVENDAS T1 GROUP BY T1.CODIGO UNION ALL SELECT T2.CODIGO, SUM(T2.QTD) AS TOT FROM ITEVENDAS_ECF T2 GROUP BY T2.CODIGO ) GROUP BY CODIGO
Abraççç
rrubinho
GOSTEI 1
Cristiane
25/11/2014
rrrubinho
o erro eu encontrei foi na digitação do código...
eu gerei com o seu código ele gerou um compo com o total geral vendido
a questão eh:
preciso jogar num gráfico, os itens mais vendidos de um período
tenho duas tabelas
itevendas (CODIGO/EMISSAO/QTD)
itevendas_ecf (CODIGO/DATA/QTD)
preciso agrupar por código somando o total ITEVENDAS.qtd+ITEVENDAS_ECF.qtd
vou testar o código que vc postou agora...
te retorno o resultado ok...
obg
o erro eu encontrei foi na digitação do código...
eu gerei com o seu código ele gerou um compo com o total geral vendido
a questão eh:
preciso jogar num gráfico, os itens mais vendidos de um período
tenho duas tabelas
itevendas (CODIGO/EMISSAO/QTD)
itevendas_ecf (CODIGO/DATA/QTD)
preciso agrupar por código somando o total ITEVENDAS.qtd+ITEVENDAS_ECF.qtd
vou testar o código que vc postou agora...
te retorno o resultado ok...
obg
GOSTEI 0
Cristiane
25/11/2014
ele esta me retornando somente um registro com o total
preciso que ele some por produto para lancar no gráfico dbchart
ex.
t1
código 1 / 2 / 25
qtd 10 / 5 / 1
data 01/01/2014 / 02/01/2014 / 03/01/2014
t2
código 1 / 5/ 10
qtd 2 / 3 / 4
emissão 01/01/2014 / 02/05/2014 / 03/06/2014
definindo o período 01/01/2014 a 25/11/2014
ficaria um resultado
código 1 total 12
código 2 total 5
código 25 total 1
código 5 total 3
código 10 total 4
com seu ultimo código, ele continua me retornando um total unico
preciso que ele some por produto para lancar no gráfico dbchart
ex.
t1
código 1 / 2 / 25
qtd 10 / 5 / 1
data 01/01/2014 / 02/01/2014 / 03/01/2014
t2
código 1 / 5/ 10
qtd 2 / 3 / 4
emissão 01/01/2014 / 02/05/2014 / 03/06/2014
definindo o período 01/01/2014 a 25/11/2014
ficaria um resultado
código 1 total 12
código 2 total 5
código 25 total 1
código 5 total 3
código 10 total 4
com seu ultimo código, ele continua me retornando um total unico
GOSTEI 0
Renato Rubinho
25/11/2014
Bom dia Cristiane,
Sinceramente, não sei o que está fazendo de diferente.
Simulei criando as tabelas, preenchendo com as informações que você passou e gerou o resultado esperado.
[img:descricao=ITEVENDAS]http://arquivo.devmedia.com.br/forum/imagem/379321-20141126-075604.jpg[/img]
[img:descricao=ITEVENDAS_ECF]http://arquivo.devmedia.com.br/forum/imagem/379321-20141126-075621.jpg[/img]
[img:descricao=Resultado]http://arquivo.devmedia.com.br/forum/imagem/379321-20141126-075749.jpg[/img]
Abraççç,
rrubinho
Sinceramente, não sei o que está fazendo de diferente.
Simulei criando as tabelas, preenchendo com as informações que você passou e gerou o resultado esperado.
[img:descricao=ITEVENDAS]http://arquivo.devmedia.com.br/forum/imagem/379321-20141126-075604.jpg[/img]
[img:descricao=ITEVENDAS_ECF]http://arquivo.devmedia.com.br/forum/imagem/379321-20141126-075621.jpg[/img]
SELECT CODIGO, SUM(TOT) FROM ( SELECT T1.CODIGO, SUM(T1.QTD) AS TOT FROM ITEVENDAS T1 GROUP BY T1.CODIGO UNION ALL SELECT T2.CODIGO, SUM(T2.QTD) AS TOT FROM ITEVENDAS_ECF T2 GROUP BY T2.CODIGO ) GROUP BY CODIGO
[img:descricao=Resultado]http://arquivo.devmedia.com.br/forum/imagem/379321-20141126-075749.jpg[/img]
Abraççç,
rrubinho
GOSTEI 1
Cristiane
25/11/2014
rrubinho
obrigada.....vc me ajudou muitooooo....
eu não estava colocando CODIGO no primeiro SELECT
se possível, preciso de mais uma ajuda.
na tabela ITEVENDAS tenho o campo EMISSAO
na tabela ITEVENDAS_ECF tenho o campo DATA
preciso além do agrupamento de total por código, preciso filtrar pelo período nas duas tabelas
obrigada.....vc me ajudou muitooooo....
eu não estava colocando CODIGO no primeiro SELECT
se possível, preciso de mais uma ajuda.
na tabela ITEVENDAS tenho o campo EMISSAO
na tabela ITEVENDAS_ECF tenho o campo DATA
preciso além do agrupamento de total por código, preciso filtrar pelo período nas duas tabelas
GOSTEI 0
Cristiane
25/11/2014
rrubinho
fiz duas alterações no código, coloquei o FIRST 5 para pegar os 5 primeiros registros e coloquei BETWEEN por tabela buscar o período, funcionou
estou tentando colocar em ordem decrescente por total para pegar os 5 mais vendidos, mas quando coloco ORDER BY TOT ele da erro
o que estou fazendo de errado?
CODE
SELECT FIRST 5
CODIGO,
SUM(TOT)
FROM
(
SELECT T1.CODIGO, SUM(T1.QTD) AS TOT FROM ITEVENDAS T1
WHERE T1.EMISSAO BETWEEN '01.01.2000' AND '01.12.2014'
GROUP BY T1.CODIGO
UNION ALL
SELECT T2.CODIGO, SUM(T2.QTD) AS TOT FROM ITEVENDAS_ECF T2
WHERE T2.DATA BETWEEN '01.01.2000' AND '01.12.2014'
GROUP BY T2.CODIGO
)
GROUP BY CODIGO
fiz duas alterações no código, coloquei o FIRST 5 para pegar os 5 primeiros registros e coloquei BETWEEN por tabela buscar o período, funcionou
estou tentando colocar em ordem decrescente por total para pegar os 5 mais vendidos, mas quando coloco ORDER BY TOT ele da erro
o que estou fazendo de errado?
CODE
SELECT FIRST 5
CODIGO,
SUM(TOT)
FROM
(
SELECT T1.CODIGO, SUM(T1.QTD) AS TOT FROM ITEVENDAS T1
WHERE T1.EMISSAO BETWEEN '01.01.2000' AND '01.12.2014'
GROUP BY T1.CODIGO
UNION ALL
SELECT T2.CODIGO, SUM(T2.QTD) AS TOT FROM ITEVENDAS_ECF T2
WHERE T2.DATA BETWEEN '01.01.2000' AND '01.12.2014'
GROUP BY T2.CODIGO
)
GROUP BY CODIGO
GOSTEI 0
Renato Rubinho
25/11/2014
Duas opções:
ORDER BY SUM(TOT) DESC
ou
ORDER BY 2 DESC
Abraççç,
rrubinho
ORDER BY SUM(TOT) DESC
ou
ORDER BY 2 DESC
Abraççç,
rrubinho
GOSTEI 1
Cristiane
25/11/2014
rrubinho
ok.....funcionou a order
este resultado estou colocando num dbchart
qdo defino o valor aparece "SUM" que eh a soma que utilizamos ok?
porem ele da erro ao executar
preciso passar de outra forma?
ok.....funcionou a order
este resultado estou colocando num dbchart
qdo defino o valor aparece "SUM" que eh a soma que utilizamos ok?
porem ele da erro ao executar
preciso passar de outra forma?
GOSTEI 0
Renato Rubinho
25/11/2014
Não uso dbchart. Não sei dizer o porque do erro.
Aparece como SUM porque você não atribuiu um alias para ele no select principal.
Tenta assim no comando para ver se não é esse o problema:
Senão, posta o erro que dá para ver se pelo erro é possível identificar o que está ocorrendo ou outras pessoas que usam o dbchart possam te ajudar.
Aparece como SUM porque você não atribuiu um alias para ele no select principal.
Tenta assim no comando para ver se não é esse o problema:
SELECT FIRST 5 CODIGO, SUM(TOT) TOT <<<--- FROM
Senão, posta o erro que dá para ver se pelo erro é possível identificar o que está ocorrendo ou outras pessoas que usam o dbchart possam te ajudar.
GOSTEI 1
Cristiane
25/11/2014
rrrubinho
funcionou assim...
SELECT FIRST 5
CODIGO,
SUM(TOT) AS TOT
FROM....
no iboquery qdo atribui os campos precisei colocar TOT como campo calculado para dar certo
muito obrigada msm....
funcionou assim...
SELECT FIRST 5
CODIGO,
SUM(TOT) AS TOT
FROM....
no iboquery qdo atribui os campos precisei colocar TOT como campo calculado para dar certo
muito obrigada msm....
GOSTEI 0