Domanda

Questa domanda è un seguito a una domanda precedente che avevo sulla scoperta di gamme di numeri sequenziali inutilizzati senza dover ricorrere ai cursori (Lavorare con numeri sequenziali in SQL Server 2005 senza cursori). Sto usando SQL Server 2005.

Quello che devo fare con quei numeri è assegnare quei numeri ai record in una tabella. Non riesco proprio a trovare un modo per mettere in relazione la tabella dei numeri con i record che necessitano di quei numeri.

Una possibile soluzione che mi è venuta in mente è stata inserire i record in una tabella di temperatura usando un'identità e usando l'inizio dell'intervallo di numeri come seme di identità. L'unico problema con questo approccio è che se ci sono lacune nella sequenza numerica, finirò con numeri di controllo duplicati.

Ecco come sembrano i miei tavoli (eccessivamente semplificati):

Tabella dei numeri:

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

Tabella dati:

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

Ho bisogno di un modo per farlo, quindi finisco con:

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

È possibile senza dover usare i cursori? Il motivo per cui sto evitando i cursori è perché la nostra attuale implementazione utilizza cursori e dal momento che è così lento (8 minuti su 12.000 record) stavo cercando alternative.

Nota: grazie a tutti coloro che hanno pubblicato le risposte. Tutti erano fantastici, dovevo scegliere quello che sembrava più facile da implementare e più facile da mantenere per chiunque mi venga dopo. Molto apprezzato.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top