Jump to content
MarcosAntonio

Select com limitação de soma de valores

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
17 minutos atrás, Motta disse:

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.

E como ficou o select ?

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 rafaelmoreira78
      Boa tarde!
      Estou querendo fazer um select a partir da seleção de um combobox. Nesse combobox o usuário escolhe o tipo de busca que ele quer. Se é por nome, por id, por data etc. E depois, exibe os dados nos campos. Porém, não estou conseguindo e não sei como resolver isso.
      public void consultar(){ String sql ="select * from tbcertificados where ?=?"; try{ pst=conexao.prepareStatement(sql); pst.setString(1,cbConsulta.getSelectedItem().toString()); pst.setString(2,txtBusca.getText()); rs=pst.executeQuery(); if (rs.next()){ lblID.setText(rs.getString(1)); txtNome.setText(rs.getString(2)); comboCursos.setSelectedItem(rs.getString(3)); txtData.setText(rs.getString(4)); txtCH.setText(rs.getString(5)); txtEmpresa.setText(rs.getString(6)); txtObs.setText(rs.getString(7)); }  
    • By osmarindy
      Boa noite Pessoal.
      Estou com o seguinte problema. Tenho duas tabelas principais "tblProjeto" e "tblItensProjeto", tenho que selecionar o projeto (tblProjeto) cujo o item 19 (tblItensProjeto) já esteja concluído (status 5) e que o item 15 (tblItensProjeto) não esteja concluído (status 5) e nem cancelado (status 4).
      Tenho o seguinte código:
      SELECT p.nmProjeto, l.nmLocalidade, f.usuario, r.nmRequisitante, p.dtSolicitacao,p.dtPrevisaoEntrega, s.nmStatus FROM tblProjeto as p inner join tblItensProjeto as i on i.idProjeto = p.idProjeto inner join tblLocalidade as l on l.idLocalidade = p.idLocalidade inner join tblFuncionario as f on f.idFuncionario = p.idFuncionario inner join tblRequisitante as r on r.idRequisitante = p.idRequisitante inner join tblStatusProj as s on s.idStatus = i.idStatus where (i.idAtividade = 19 and i.idStatus= 5 ) and (i.idAtividade = 15 and (i.idStatus <> 5 and i.idStatus <> 4))
      Se executo um  filtro de cada vez (where i.idAtividade = 19 and i.idStatus= 5 ) ou (i.idAtividade = 15 and (i.idStatus <> 5 and i.idStatus <> 4)) eles trazem resultados, mas quando deixo os dois filtros não funciona.
      Possuo 5 projetos que estão com a atividade 19 concluída e atividade 15 pendente. mas, não consigo com esse select trazer a informação. Alguém sabe como posso resolver?
    • By asacap1000
      Galera me foi solicitado a criação de um servidor web, para disponibilizar serviços para os clientes. O que vocês recomendam?
      Tenho um servidor da DELL com windows 2016. Todo o desenvolvimento será em PHP, Javascript e companhia Ltda com conexão aos bancos de dados Mysql, SQL e ORACLE.
      Já temos um servidor que será desativado porém está utilizando uma versão muito antiga de PHP 5.4 e como base de instalação foi utilizado o WampServer. 
    • By Motta
      Envio de https via Oracle Versão
      Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production PL/SQL Release 12.2.0.1.0 - Production "CORE 12.2.0.1.0 Production" TNS for Linux: Version 12.2.0.1.0 - Production NLSRTL Version 12.2.0.1.0 - Production Obs 1) Wallet Instalado
      Obs 2) O problema não seria reproduzível por questões de segurança Obs 3) Já tentei com o fornecedor
      Tento enviar um POST via PLSQL e recebo o seguinte erro : Erro : ORA-24263: Certificate of the remote server does not match the target address.
      Pergunta Como posso saber o valor de req := utl_http.begin_request(url, 'POST',https_host =>'???????'); ? é obrigatório ?
      create or replace PROCEDURE "SMS_ENVIO2" (PNUMSMS IN VARCHAR2 , PTEXTO IN VARCHAR2 , PRETORNO OUT VARCHAR2) /*alguns dados ocultos*/ AS req utl_http.req; res utl_http.resp; url varchar2(4000) := 'https://messaging.o2c.cloud/api/v2/sms/';--acho que posso citar o site name varchar2(4000); buffer varchar2(4000); content varchar2(4000); VS_USUARIO VARCHAR2(11) := '*****'; VS_SENHA VARCHAR2(20) := '*****'; VS_SERIAL VARCHAR2(8);--VARCHAR2(100); VS_SCHEDULLE VARCHAR2(16) := TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI'); VS_AUTHOR_64 VARCHAR2(20) := '*********'; begin UTL_HTTP.SET_WALLET('file:.....', '**********'); -- VS_SERIAL := LPAD(SMSENVIO_SERIAL_SEQ.NEXTVAL,8,'0'); content := ' { ' || ' "sendSmsRequest": {' || ' "to": "' || PNUMSMS ||'",' || ' "message": "' || PTEXTO || '",' || ' "id": "' || VS_SERIAL || ' }' || ' } '; -- dbms_output.put_line(url); dbms_output.put_line(content); -- --req := utl_http.begin_request(url,'POST'); req := utl_http.begin_request(url, 'POST',https_host =>'???????'); utl_http.set_header(req, 'Content-Type', 'application/json'); utl_http.set_header(req, 'Content-Length', length(content)); utl_http.set_header(req, 'Authorization', 'Basic ' || utl_encode.base64_encode(VS_AUTHOR_64)); -- utl_http.write_text(req, content); res := utl_http.get_response(req); begin loop utl_http.read_line(res, buffer); end loop; utl_http.end_response(res); exception when utl_http.end_of_body then utl_http.end_response(res); end; dbms_output.put_line('retorno ' || buffer); exception when others then PRETORNO := 'Erro : ' || UTL_HTTP.GET_DETAILED_SQLERRM; end;  
×

Important Information

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