Question

Cette question est un suivi d'une question précédente que j'avais sur la découverte de gammes de numéros séquentiels sans avoir à recourir aux curseurs (Travailler avec des nombres séquentiels dans SQL Server 2005 sans curseurs). J'utilise SQL Server 2005.

Ce que je dois faire avec ces chiffres, c'est d'attribuer ces numéros à des enregistrements dans un tableau. Je n'arrive pas à trouver un moyen de relier réellement le tableau des nombres avec les enregistrements qui ont besoin de ces chiffres.

Une solution possible qui m'est venue à l'esprit a été d'insérer les enregistrements dans un tableau temporaire en utilisant une identité et en utilisant le début de la plage de nombres comme graine d'identité. Le seul problème avec cette approche est que s'il y a des lacunes dans la séquence de nombres, je finirai avec des numéros de contrôle en double.

Voici à quoi ressemblent mes tables (trop simplifiées):

Tableau de numéros:

Number      
-------
102314
102315
102319
102320
102324
102329 

Tableau de données:

CustomerId   PaymentAmt   ControlNumber
----------   ----------   -------------
1001         4502.01      NULL
1002         890.00       NULL
9830         902923.34    NULL

J'ai besoin d'un moyen de le faire alors je me retrouve avec:

CustomerId   PaymentAmt   ControlNumber
----------   ----------   -------------
1001         4502.01      102314
1002         890.00       102315
9830         902923.34    102319

Est-ce possible sans avoir à utiliser les curseurs? La raison pour laquelle j'évite les curseurs est que notre implémentation actuelle utilise des curseurs et comme il est si lent (8 minutes sur 12 000 enregistrements), je cherchais des alternatives.

Remarque: Merci à tous ceux qui ont publié des réponses. Tous étaient super, j'ai dû choisir celui qui semblait plus facile à mettre en œuvre et le plus facile à entretenir pour que quiconque vient après moi. Très appréciée.

Pas de solution correcte

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