Come unire i numeri sequenziali a dati non correlati (SQL Server)
-
11-11-2019 - |
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