Pergunta

Eu quero atualizar a coluna de uma tabela utilizando os resultados de um procedimento armazenado

create procedure seq
as
DECLARE @NextValue INT;
INSERT SequencesTable DEFAULT VALUES;
DELETE SequencesTable WITH(READPAST); 
SELECT SCOPE_IDENTITY();
go

Eu não posso usar uma UDF já que é nodeterministic. Algo como isso não vai funcionar

UPDATE [dbo].[t1]     SET [c1] = seq

Tenho a sensação de que estou abordando este o caminho errado.

Eu só quero fazer atualização uma tabela que se parece com isso

1 1 | 2 2 | 1 4
1 4
5 5
1 2

Para ter esta aparência

1 1 | 2 2 | 3 4
4 4
5 5
6 2

Foi útil?

Solução

Tente algo parecido com isto:

update a set c1 = c1_new
from (
  select 
    c1, c2
  , c1_new = row_number() over (order by nullif(c1,c1))
  from dbo.t1
  ) a

Brinque com a consulta interna até obter algo que você gosta, em seguida, aplicar a atualização.

O NULLIF (C1, C1) tentativas para preservar a ordem original no disco. Ele sempre retorna null.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top