Actualizar uma coluna de uma tabela para ser uma sequência
-
06-07-2019 - |
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
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