Fórum SUM em sql retorna só o primeiro registro. #270870
03/03/2005
0
Estou tentando somar um campo de uma tabela, mas só estou obtendo o valor do primeiro registro.
Estou usando assim:
select CODNSI, NPCNSI, SUM(QTDNSI) from ESANSI
Where NPCNSI BETWEEN 45269 and 45372
Group by CODNSI, NPCNSI
Era para retornar um valor maior que 5000. Mas só retorna 12 (que é o valor do primeiro registro).
Podem me dar uma mão?
Ivonei
Curtir tópico
+ 0Posts
03/03/2005
Hebrao
Não há nada de erado com seu comando SQL.
Verifique quantos registros existem no banco de dados com as condições que vc quer. Ex:
select CODNSI, NPCNSI, QTDNSI from ESANSI
Where NPCNSI BETWEEN 45269 and 45372
As vezes sua condição between está com um intervalo muito pequeno...
Outra tentativa seria tente trocar o between por >= e <=. EX:
select CODNSI, NPCNSI, SUM(QTDNSI) from ESANSI
Where NPCNSI >= 45269 and NPCNSI <= 45372
Group by CODNSI, NPCNSI
Sei que não deveria fazer diferença, mas não custa tentar, né?
Só por curiosidade : Qual banco de dados está usando?
Espero ter ajudadode alguma forma.
[]´s
Heber
Gostei + 0
04/03/2005
Arc
olhando o codigo, a principio, ele em si, não tem nada de errado, mas fica dificil dizer o por que do erro sem saber o significado dos campos
Pelo que estou vendo, imagino que, vc deve estar tendo como resposta varias linhas, com valores pequenos pois seu select está agrupado pelo codigo ´CODNSI´ e pelo campo ´NPCNSI´, então para cada ´CODNSI´ ou ´NPCNSI´ diferentes o select vai retornar uma soma diferente, independente da condição BETWEEN
Gostei + 0
04/03/2005
Ivonei
Estou usando o firebird e a tabela é referente aos itens das NFiscais. o NPCNSI é o num da NF e CODNSI é o código do produto. Pelo que você está dizendo, eu poderia fazer assim:
[color=green:1722fc8814]select CODNSI, NPCNSI, SUM(QTDNSI) from ESANSI
Where NPCNSI= 45269
Group by CODNSI, NPCNSI [/color:1722fc8814]
Que continuaria mostrando apenas o total do primeiro registro. Pois os CODNSI são num. diferentes. É isto? Então como posso resolver? :?
Até +
Gostei + 0
04/03/2005
Arc
select SUM(QTDNSI) from ESANSI
Where NPCNSI BETWEEN 45269 and 45372.
Da forma como vc fez, ele mostra a soma por nota
Gostei + 0
04/03/2005
Ivonei
Bingo. Eu pensei que tinha de colocar no Select, todos os campos que utilizo na query.
Na verdade o que eu precisava é saber o total de um determinado produto que está nos pedidos em aberto (que não foi gerado NF ainda). Resolvi o problema com o seguinte código:
Select SUM(QTDNSI) from esansi A
INNER JOIN esanst B ON A.codnsi=:CODIGO AND A.NPCNSI=B.NPCNST AND B.NNFNST IS NULL
Onde
ESANST: Tabela de Pedidos;
ESANSI: Tabela de Ítens do Pedido;
Muito obrigado. :)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)