Ir para o conteúdo
jafm

[Resolvido] Group by SUM

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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...

  • Voto 1

Pedro Martins

Sharing is Knowledge!

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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).

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.