While

31/10/2006 - 19:35 por Eduardo De Luca | Informe spam
Hola , que tal tengo el siguiente caso (esta resumido , ya que la
explicación funcional es muy extensa y no les quiero quemar la cabeza).

Tabla A

Mov_contable (money)

fecha (datetime)

cant_periodos (int)



Tabla B

Calculo_mov (money)

Fecha (date time)





En la tabla A puedo tener el sgte registro



10.00 31/10/2006 8



El ocho significa que tengo que insertar 8 veces un registro en la tabla B
aplicando un algoritmo financiero muy simple (lo aclaro porque aca no esta
el problema)





Yo pensé (siempre usando el ejemplo mencionado arriba)





Declare @counter int



Set @counter =cant_periodos from tabla A



While (@counter < 9)



Begin



Insert Tabla B ...



Set @counter=@counter + 1



end



el problema que se me presenta es de performace , ya que cuando lo valores
del WHILE son muy elevados se me va el tiempo al diablo .

Alguno me podría ayudar y se le ocurre otra forma de hacerlo?



Desde ya muchas gracias
 

Leer las respuestas

#1 Javier Loria
31/10/2006 - 19:51 | Informe spam
Hola Eduardo:
Puedes usar el WITH para generar una tabla o usar una tabla de numeros
es muy facil:
Con with (SQL 2005):
=WITH Numeros(Num)
AS
(
SELECT 1
UNION ALL
SELECT Num+1 FROM Numeros
WHERE Num<100
)
INSERT TablaB
SELECT ...
FROM TablaA
JOIN Numeros
ON TablaA.CantPeriodos<=Numeros.Num
= En caso de no tener SQL2005 creas primero la tabla numeros, la llenas y
solo haces la ultima parte:
=INSERT TablaB
SELECT ...
FROM TablaA
JOIN Numeros
ON TablaA.CantPeriodos<=Numeros.Num
= Saludos,

Javier Loria
Costa Rica-MVP
Solid Quality Learning

"Eduardo De Luca" wrote in message
news:eKGQftR$




Hola , que tal tengo el siguiente caso (esta resumido , ya que la
explicación funcional es muy extensa y no les quiero quemar la cabeza).

Tabla A

Mov_contable (money)

fecha (datetime)

cant_periodos (int)



Tabla B

Calculo_mov (money)

Fecha (date time)





En la tabla A puedo tener el sgte registro



10.00 31/10/2006 8



El ocho significa que tengo que insertar 8 veces un registro en la tabla B
aplicando un algoritmo financiero muy simple (lo aclaro porque aca no esta
el problema)





Yo pensé (siempre usando el ejemplo mencionado arriba)





Declare @counter int



Set @counter =cant_periodos from tabla A



While (@counter < 9)



Begin



Insert Tabla B ...



Set @counter=@counter + 1



end



el problema que se me presenta es de performace , ya que cuando lo valores
del WHILE son muy elevados se me va el tiempo al diablo .

Alguno me podría ayudar y se le ocurre otra forma de hacerlo?



Desde ya muchas gracias


Preguntas similares