Jump to content

Recommended Posts

boa tarde. 

Estou precisando de um Select que retorne uma soma que ao chegar a determinado valor ela reinicie e continue fazendo sucessivamente

 select
  pedido,
  volume,
  limite,
  SUM(volume) over (order by pedido ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) saldo 
 from pedidos
 group by pedido

o select está retornando assim porém quero que toda vez que chegue ou passe do limite resete o saldo, por exemplo parar no 100 que é o limite e começar um novo saldo

pedido       volume         limite     saldo
 1             70            100        70
 2             10            100        80
 3             20            100        100
 4             50            100        150
 5             30            100        180

 

preciso que ele soma o volume enquanto o saldo seja <= que o "limite", quando passar pare de somar e comece outra soma começando do 0, como no exemplo abaixo.

pedido        volume        limite     saldo
 1             70            100        70
 2             10            100        80
 3             20            100        100
 4             50            100        50
 5             30            100        80

 

Share this post


Link to post
Share on other sites
3 horas atrás, Motta disse:

Veja se o asktom o ajuda.

não me ajuda muito pois nesse exemplo ele usa a condição pela data, o meu tem que ser em cima da própria soma, no caso o saldo, preciso zerá-lo e reseta-lo após ele atingir o limite

Share this post


Link to post
Share on other sites

Eu já fiz "zerando" com um número fixo de linhas , o atuário que acumulasse os últimos 12 meses , assim no 13º expurgava do 1º e assim por diante.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By mr22robot
      Boa tarde. Estou com o seguinte problema: Preciso retornar um selct da seguinte maneira:
      exemplo que não funciona:
      select codusur,numnota,codcli,cliente,vltotal,numtransvenda,dev,decode(vlvenda),if(vlvenda > 100 then 1 else 2) from( select tb1.codusur,tb1.numnota,tb1.codcli,tb1.cliente,tb1.vltotal,tb1.numtransvenda,DECODE(tb2.VLTOTAL,NULL,0,tb2.VLTOTAL)DEV from( select codusur,numnota,pcnfsaid.codcli,pcnfsaid.cliente,pcnfsaid.vltotal,pcnfsaid.numtransvenda from pcnfsaid where pcnfsaid.dtsaida > '01-OCT-2020' and pcnfsaid.dtcancel is null )tb1 left outer join (select DISTINCT VLTOTAL,VW_INTEGRA_DEVOLUCAO_TOTAL.NUMTRANSVENDA from VW_INTEGRA_DEVOLUCAO_TOTAL )tb2 on tb1.NUMTRANSVENDA = tb2.NUMTRANSVENDA order by numnota ) Como pode reparar, eu usei um if/else já que não sei a forma correta de usar. Pois com DECODE não consegui usar uma forma de fazer a comparação. 
      Pois preciso mesmo retornar uns valores fixos. Ex: 
      Se o valor > 40000, retorna um valor x; Se for maior que 5000 retorna um valor y. 
      Aguardo a ajuda dos amigos. Grato
    • By david2007
      Endpointer Framework é um Framework PHP para construção de APIs REST com Programação Procedural.
       
      http://endpointer.com
       
      Endpointer Framework é Código Aberto sob a licença MIT
       

    • By fabiorazevedo
      Boa noite, comecei a pouco a trabalhar com banco oracle, e vem acontecendo uma coisa muito estranha, pelo menos uma vez por semana o banco para, da erro de no listener, nas maquinas e preciso reiniciar o servidor (windows server 2016). olhando no alert não encontro nada, pela falta de experiencia, que possa parecer pertinente ao problema.
    • By lezão
      Boa tarde, meus amigos!
      Td bem com vcs?
       
      Tenho um Select em ASP que tbm trabalho que roda normal.
      "SELECT * FROM Banners order by RND(INT(NOW*id_banners)-NOW*id_banners)"  
      E gostaria que roda se em PHP tbm mas infelizmente não estou conseguindo realizar esse acontecimento.
      "SELECT * FROM Produtos where Banners = 'Sim' order by RND(INT(NOW*Banners)-NOW*Banners)"  
      Desde ja muito obrigado!
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.