kamidaki 0 Denunciar post Postado Agosto 30, 2013 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
Motta 645 Denunciar post Postado Agosto 30, 2013 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
kamidaki 0 Denunciar post Postado Setembro 3, 2013 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 VlAcumulado30/08 650 50 13 B 65030/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
Motta 645 Denunciar post Postado Setembro 3, 2013 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
kamidaki 0 Denunciar post Postado Setembro 3, 2013 Motta se você fosse mais bonito te dava um beijo hehehehehe.... PARTITION BY era o que eu precisava Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 3, 2013 Dispenso !!! Compartilhar este post Link para o post Compartilhar em outros sites
kamidaki 0 Denunciar post Postado Setembro 3, 2013 hehehehe brinqs.... vlw mesmo pela ajuda Compartilhar este post Link para o post Compartilhar em outros sites