Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

kamidaki

Valor Acumulado

Recommended Posts

Boa tarde pessoal, Estou com um problema do qual não consigo entender o pq não está funcionando meu acumulador de valores

 

eu tenho uma tabela que tem dados do produto e uma tabela compementar a esses dados

 

estou utilizando um join para unir as duas e está me retornando os dados direitinho. O meu problema é que quando tento dar um sum em uma coluna da tabela ele me retorna o sum de linha por linha e não do que eu quero que é (o total do grupo)

 

exemplo

 

Data ValorTotal ValorUnitario Quant Grupo VlAcumulado

30/08 100 10 10 A 100

30/08 250 10 25 A 350

Total 350

 

 

outro grupo

Data ValorTotal ValorUnitario Quant Grupo VlAcumulado

30/08 650 50 13 B 650

30/08 380 20 19 B 1030

Total 1030

 

só que ele está rodando o sum a cada linha ou seja a somatória do campo é ele mesmo

 

está saindo desse jeito

Data ValorTotal ValorUnitario Quant Grupo VlAcumulado

30/08 650 50 13 B 650

30/08 380 20 19 B 380

 

 

estava utilizando um select para somar a cada linha

SELECT b.cd_ent_pro, a.cd_estoque,f.cd_produto,f.cd_especie,a.cd_tip_doc, b.vl_total

, SUM( b.vl_total ) OVER( ORDER BY b.vl_total ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) ACUMULA ....tem ai mais itens que estou colocando no select

 

quando faço isso direto na tabela sem join ele soma normal mas não levando em conta Grupo nem nada pois o grupo provindo de join de outra tabela

Compartilhar este post


Link para o post
Compartilhar em outros sites

A query passada não parece "bater" com as linhas exibidas.Estas "analycts functions" funcionam, postei outro dia aqui no fórum de Oracle um link para um artigo da Oracle Magazine com diversos exemplos dela, dá uma lida.

 

http://forum.imasters.com.br/topic/497718-srie-boa-de-artigos/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui somar os grupos motta e esses dados ai em cima eram só exemplos....

o meu problema é que o grupo seguinte vem com o valor do grupo anterior

 

Data ValorTotal ValorUnitario Quant Grupo VlAcumulado
30/08 650 50 13 B 650
30/08 380 20 19 B 1030
Total 1030

01/09 330 30 11 C 1360 que é 1030+330 só que não queria que somasse pois são grupos diferentes



Usei o

Sum(valor) OVER (ORDER BY tipo_grupo, valor) FROM tabela GROUP BY rollup(valor)

 

para fazer a soma do grupo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Temho um exemplo que aqui roda

 

 

SELECT
    SUBSTR(EMISSAO,1,6) REFER,
    NOMFOR FORNEC,
    VALOR VALOR,
    SUM(VALOR) OVER (PARTITION BY SUBSTR(EMISSAO,1,6),NOMFOR ORDER BY VALOR,SUBSTR(EMISSAO,1,6),NOMFOR) ACUM_FORNEC,
    SUM(VALOR) OVER (PARTITION BY SUBSTR(EMISSAO,1,6),NOMFOR) TOT_FORNEC,
    SUM(VALOR) OVER (PARTITION BY NOMFOR) TOT_GER_FORNEC,
    SUM(VALOR) OVER (ORDER BY NOMFOR, VALOR) ACUM_REFER,
    SUM(VALOR) OVER () TOTAL_GERAL
FROM
    CONTASPAGAR
    WHERE SUBSTR(EMISSAO,1,6) >= '201201'  
    AND NOMFOR <> ' '
ORDER BY
    SUBSTR(EMISSAO,1,6),
    NOMFOR,
    VALOR

 




 

CONTASPAGAR
-----------
EMISSAO
VALOR
NOMFOR

 

PARTITION BY diz a "quebra" 


Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.