Jump to content
jafm

[Resolvido] Group by SUM

Recommended Posts

jafm

Boas,

na minha tabela tenho artigos e quero fazer a soma dos artigos vendidos numa determinada data.

Até aqui tu ok, agora preciso de enviar o iva, pois vou precisar dele. só que quando coloco o campo do iva no group by o somatorio difere.

Existe a possibilidade de contronar o problema

select artigo, SUM(valor),I.IVaVenda
    FROM artigo as A
 inner join iva as I on A.codartigo) = I.codartigo COLLATE SQL_Latin1_General_CP1_CI_AS
 where data Date BETWEEN '07-11-2013 00:01' AND '07-11-2013 23:59'
 GROUP BY valor,I.IVaVenda

Share this post


Link to post
Share on other sites
Rui Carlos

De certeza que queres fazer GROUP BY valor? Não devias estar a agrupar por artigo?

Penso que o problema é que podes ter artigos com o mesmo valor, mas com IVA diferente, e nesse caso não vai dar o resultado que pretendes.

Share this post


Link to post
Share on other sites
jafm

Peço desculpa, sim quero agrupar por artigo. Correcto tenho ivas diferentes. Não existe alternativa?

Share this post


Link to post
Share on other sites
Rui Carlos

Já testaste a query

SELECT artigo, SUM(valor),I.IVaVenda
    FROM artigo AS A
 INNER JOIN iva AS I ON A.codartigo) = I.codartigo COLLATE SQL_Latin1_General_CP1_CI_AS
 WHERE DATA DATE BETWEEN '07-11-2013 00:01' AND '07-11-2013 23:59'
 GROUP BY artigo

?

Se não funcionar, o que é que falha?

Share this post


Link to post
Share on other sites
jafm

se colocar assim dá o seguinte erro

Column 'site.IVAVenda' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

@Rechousa

sim a soma daquele artigo para aquela data altera quando acrescento o campo do iva no group by, caso contrario devolve me o erro acima

Share this post


Link to post
Share on other sites
Rechousa

Olá,

Já testaste a query

SELECT artigo, SUM(valor),I.IVaVenda
 FROM artigo AS A
 INNER JOIN iva AS I ON A.codartigo) = I.codartigo COLLATE SQL_Latin1_General_CP1_CI_AS
 WHERE DATA DATE BETWEEN '07-11-2013 00:01' AND '07-11-2013 23:59'
 GROUP BY artigo

?

Se não funcionar, o que é que falha?

Esta query não pode funcionar.

Assim não deverá dar erro:

SELECT artigo, SUM(valor), SUM(I.IVaVenda)
 FROM artigo AS A
 INNER JOIN iva AS I ON A.codartigo) = I.codartigo COLLATE SQL_Latin1_General_CP1_CI_AS
 WHERE DATA DATE BETWEEN '07-11-2013 00:01' AND '07-11-2013 23:59'
 GROUP BY artigo

Nem assim:

SELECT artigo, SUM(valor),I.IVaVenda
 FROM artigo AS A
 INNER JOIN iva AS I ON A.codartigo) = I.codartigo COLLATE SQL_Latin1_General_CP1_CI_AS
 WHERE DATA DATE BETWEEN '07-11-2013 00:01' AND '07-11-2013 23:59'
 GROUP BY artigo, I.IVaVenda

Mas acho estranho a soma das parcelas ser diferente do total...

  • Vote 1

Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
Rui Carlos

O I.IVaVenda é um valor ou uma taxa?

Se for um valor, provavelmente vais queres somar os valores. Se for a taxa, deves poder colocá-lo no GROUP BY (assumo que a taxa para um mesmo artigo seja sempre igual).

Share this post


Link to post
Share on other sites
jafm

na minha query faltava adicionar mais uma condição no where para não fazer o somatorio do total, já está resolvido o problema.

Obrigado

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.