Fórum Problema com Select Sum As #231827

12/05/2004

0

Na minha tabela itens (id, nome, valor, qtde)
uso o select:
select
   ID, NOME, VALOR, QTDE,
   (VALOR * QTDE) AS VALOR_ITEM
from itens


Funciona beleza, mas preciso agora somar o valor total
do campo VALOR_ITEM, tentei desta forma mas não
funcionou?
select
   ID, NOME, VALOR, QTDE,
   (VALOR * QTDE) as VALOR_ITEM,
   sum(VALOR_ITEM) as VALOR_TOTAL
from itens


não funcionou, aí tentei assim:
select
   ID, NOME, VALOR, QTDE,
   (VALOR * QTDE) as VALOR_ITEM,
   sum(VALOR * QTDE) as VALOR_TOTAL
from itens


Tbm não deu certo. Será que alguem pode
esclarecer esse problema com o select ?


Eniorm

Eniorm

Responder

Posts

12/05/2004

Rômulo Barros

select
ID, NOME, VALOR, QTDE,
SUM(VALOR * QTDE) as VALOR_ITEM,
from itens

SELECT A.SUM(SELECT (VALOR * QTDE)AS A FROM ITENS GROUP BY ID)



Responder

Gostei + 0

12/05/2004

Comodelphi

nesse caso vc tem que usar uma subquery na coluna:
SELECT
A.ID, A.NOME, A.VALOR, A.QTDE,
(A.VALOR * A.QTDE) AS A.VALOR_ITEM,
(SELECT SUM(B.VALOR) * SUM(B.QTDE) WHERE B.ID = A.ID) AS VALOR_TOTAL
from itens A


Responder

Gostei + 0

12/05/2004

Aroldo Zanela

Colega,

É um total geral ou um total por item?


Responder

Gostei + 0

13/05/2004

Eniorm

[quote:368ff3c21a=´Aroldo Zanela´]Colega,
É um total geral ou um total por item?[/quote:368ff3c21a]

è um total geral, de todos os itens nessa tabela.
Vou tentar os meios acima, qualquer coisa eu
falo sobre os resultados.
Abradeço a todos, galera. :D :wink:


Responder

Gostei + 0

13/05/2004

Eniorm

nesse caso vc tem que usar uma subquery na coluna: SELECT A.ID, A.NOME, A.VALOR, A.QTDE, (A.VALOR * A.QTDE) AS A.VALOR_ITEM, (SELECT SUM(B.VALOR) * SUM(B.QTDE) WHERE B.ID = A.ID) AS VALOR_TOTAL from itens A


Putz cara ainda não deu certo :(


Responder

Gostei + 0

13/05/2004

Paulo_amorim

Olá

Eu testei isso que vc fez

select 
   ID, NOME, VALOR, QTDE, 
   (VALOR * QTDE) as VALOR_ITEM, 
   sum(VALOR * QTDE) as VALOR_TOTAL 
from itens 


e funcionou...
ele da erro ou traz algo nada ver?

Até+


Responder

Gostei + 0

13/05/2004

Aroldo Zanela

Colega,

Se você precisa do valor total em todas as linhas como uma coluna, então uma solução RUIM seria o uso de subquery, pois tem um custo elevado para o processador em termos de utilização de recursos.

No caso, uma forma seria:

select ses_data, ace_motorista, ace_vlr_total,
(select sum(ace_vlr_total)
from acertos where ses_data = ´01/02/2004´) as total
from acertos
where ses_data = ´01/02/2004´


Retornado algo como:

ses_data   ace_motorista ace_vlr_total     total    
---------- ------------- ----------------- ---------
2004-01-02 45            11392.09          369745.54
2004-01-02 57            6063.01           369745.54
2004-01-02 73            4892.20           369745.54
2004-01-02 74            8122.43           369745.54
2004-01-02 95            5416.64           369745.54


Se não precisar do valor total em cada linha, então a melhor solução é fazer uma consulta para recuperar o valor total e outra para recuperar as linhas. (duas etapas)


Responder

Gostei + 0

13/05/2004

Eniorm

[quote:2f415b1651=´Aroldo Zanela´]Colega,
Se você precisa do valor total em todas as linhas como uma coluna...
No caso, uma forma seria:
select ses_data, ace_motorista, ace_vlr_total,
(select sum(ace_vlr_total)
from acertos where ses_data = ´01/02/2004´) as total
from acertos
where ses_data = ´01/02/2004´

Retornado algo como:

ses_data   ace_motorista ace_vlr_total     total    
---------- ------------- ----------------- ---------
2004-01-02 45            11392.09          369745.54
2004-01-02 57            6063.01           369745.54
2004-01-02 73            4892.20           369745.54
2004-01-02 74            8122.43           369745.54
2004-01-02 95            5416.64           369745.54


Se não precisar do valor total em cada linha, então a melhor solução é fazer uma consulta para recuperar o valor total e outra para recuperar as linhas. (duas etapas)[/quote:2f415b1651]

Obrigado Aroldo, a sua dica ajudou muitíssimo, eu consegui,
veja como eu usei:
select
   id, nome, valor, quant,
   (valor * quant) as valor_item,
   (select sum(valor * quant) from itens) as valor_total
from itens


Muito obrigado mesmo :D


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar