Question

Je souhaite mettre à jour la colonne d'une table à l'aide des résultats d'une procédure stockée

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

Je ne peux pas utiliser de fichier UDF, car il n’est pas déterministe. Quelque chose comme ça ne marchera pas

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

J'ai le sentiment que je l'aborde dans la mauvaise direction.

Je veux juste mettre à jour un tableau qui ressemble à ceci

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

Pour ressembler à ceci

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

Était-ce utile?

La solution

Essayez quelque chose comme ça:

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

Jouez avec la requête interne jusqu'à ce que vous obteniez quelque chose que vous aimez, puis appliquez la mise à jour.

NULLIF (c1, c1) tente de conserver l'ordre d'origine sur le disque. Il retourne toujours null.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top