0
votes

Avoir une table avec quelques lignes répétitives, souhaitez-y les numéroter séquentiellement pour chaque identifiant

J'ai une table personnalisée avec quelques lignes de répétition, format général: xxx

souhaite créer une instruction de mise à jour pour mettre à jour une colonne SEQNO afin de ressembler à: xxx

Le tableau est déjà rempli et la colonne est créée.

a essayé d'utiliser un numéro de rangée sur la partition, je pense que cela fournirait une solution, mais avoir des problèmes avec la syntaxe.


1 commentaires

Pourriez-vous publier l'échantillon de code pour le numéro de ligne sur la partition que vous avez mentionnée, même si la syntaxe est fausse? Si vous modifiez votre question et ajoutez cette information, il sera plus facile de vous aider.


3 Réponses :


0
votes

a trouvé un bon tutoriel pour utiliser Row_Number () sur (partition de ...)

J'ai ajouté la ligne suivante à ma déclaration de sélection utilisée pour remplir la table:

Row_Number () sur (partition par ordre d'identification par date)

http: //www.sqlservertorial. Net / SQL-Server-Fenêtre-Fenêtre-Function / SQL-Server-Row_Number-Fonction /


0 commentaires

0
votes

Vous semblez vouloir utiliser une CTE mise à jour avec une fonction de fenêtre:

with toupdate as (
      select t.*, row_number() over (order by id, val) as seqnum
      from t
     )
update toupdate
    set seqno = seqnum;


0 commentaires

0
votes

Vérifiez ceci -

IF OBJECT_ID('TEMPDB..#SampleTable') IS NOT NULL 
    DROP TABLE #SampleTable

Create table #SampleTable 
(
ID varchar(5),
Val varchar(10),
SeqNo INT
)

insert into #SampleTable(ID,Val) 
values 
('ID1','Value'),
('ID1','Value2'),
('ID2','Value3'),
('ID2','Value4')

UPDATE T SET T.SeqNo=A.SeqNo
FROM #SampleTable T INNER JOIN 
(
    select ID,Val,row_number() over (order by ID,Val) as SeqNo 
    from #SampleTable
) A ON T.ID=A.ID AND T.Val=A.Val

SELECT * FROM #SampleTable


0 commentaires