2009-09-28 5 views
2

Existe-t-il une instruction T-SQL pour remplir automatiquement une colonne vide dans une table avec des valeurs incrémentées commençant à une valeur spécifique?Incrémentation de la colonne int dans la table MS SQL Server via SP

E.g.

UPDATE A SET A.NO = ROW_NUMBER() OVER (ORDER BY A.NO) + @max WHERE A.NO is NULL 

Cette déclaration travail doen't et je ne sais pas comment le faire fonctionner ...

Toute aide est appréciée!

Répondre

3
WITH q AS 
     (
     SELECT a.*, MAX(no) OVER() + ROW_NUMBER() OVER (ORDER BY a.no) AS rn 
     FROM a 
     ) 
UPDATE q 
SET  no = rn 
2

Cela fonctionne. Vous devez découpler la fonction de classement de la mise à jour

UPDATE 
    bar 
SET 
    NO = bar.foo + @max 
FROM 
    (SELECT 
     A.NO, 
     ROW_NUMBER() OVER (ORDER BY A.NO) AS foo 
    FROM 
     A 
    WHERE 
     A.NO is NULL 
    ) bar 
Questions connexes