Jump to content
wowsatos

Increment in variable on select

Recommended Posts

Pessoal, boa tarde.

 

Eu sou novato por aqui e já procurei diversas maneiras encontrar algo parecido com o abaixo, mas não obtive sucesso.

 

O que estou tentando fazer é um identificador, que incremente 1 sempre que o valor da coluna mudar. porém row_number não resolve nesse caso.

 

Não sei se existe uma maneira de fazer isso.

 

R_ID    (O QUE PRECISO)

1                      1

1                      1

1                      1

2                      2

2                      2

2                      2

1                      3

1                      3

1                      3

 

 

   case
        when
            lag(r_id,1,0) over (order by r_id) = r_id
        then
             :teste

        ELSE

             :teste := (teste +1)   
    end
    rr_id

Share this post


Link to post
Share on other sites

Dá para fazer por trigger , veja um exemplo semelhante ao pedido.

 

https://dba.stackexchange.com/questions/47473/trigger-to-increment-a-column-value-after-update-in-a-column-of-same-table

 

Algo assim

 

 

create trigger increment

Before update on Tabela

begin

  if :old.r_id <> :new.r_id then

      :new.r_increment := :new.r_increment +1;

  end if;

end;

 

Inicializar o campo com zero , dá para melhorar este código , estou num tablet depois edito uma solução melhor.

Share this post


Link to post
Share on other sites
1 hour ago, Motta said:

Dá para fazer por trigger , veja um exemplo semelhante ao pedido.

 

https://dba.stackexchange.com/questions/47473/trigger-to-increment-a-column-value-after-update-in-a-column-of-same-table

 

Algo assim

 

 

create trigger increment

Before update on Tabela

begin

  if :old.r_id <> :new.r_id then

      :new.r_increment := :new.r_increment +1;

  end if;

end;

 

Inicializar o campo com zero , dá para melhorar este código , estou num tablet depois edito uma solução melhor.

Opa, boa noite. Muito obrigado pela atenção.

 

Show, mas aí só funcionaria no caso de estar inserindo um novo registro. No caso eu estou fazendo um 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

×

Important Information

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