Aggiorna una colonna di una tabella in modo che sia una sequenza
-
06-07-2019 - |
Domanda
Voglio aggiornare la colonna di una tabella usando i risultati di una procedura memorizzata
create procedure seq
as
DECLARE @NextValue INT;
INSERT SequencesTable DEFAULT VALUES;
DELETE SequencesTable WITH(READPAST);
SELECT SCOPE_IDENTITY();
go
Non posso usare un UDF poiché è nodeterministico. Qualcosa del genere non funzionerà
UPDATE [dbo].[t1] SET [c1] = seq
Ho la sensazione che mi sto avvicinando a questo nel modo sbagliato.
Voglio solo aggiornare una tabella simile a questa
1 1
2 2
1 4
1 4
5 5
1 2
Assomigliare a questo
1 1
2 2
3 4
4 4
5 5
6 2
Soluzione
Prova qualcosa del genere:
update a set c1 = c1_new
from (
select
c1, c2
, c1_new = row_number() over (order by nullif(c1,c1))
from dbo.t1
) a
Gioca con la query interna fino a ottenere qualcosa che ti piace, quindi applica l'aggiornamento.
NULLIF (c1, c1) tenta di conservare l'ordine originale sul disco. Restituisce sempre null.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow