numeros iterativos en tabla temporal con sql server
A veces es necesario contar con una lista iterativa de números en una consulta sql, como no disponemos directamente de la instrucción for (sería ideal un for(int x=0;x<100;x++), nos quedan dos alternativas dinámicas.
Recursión CTS
La desventaja, es que solo podemos llamar a la recursión 100 veces =(
;WITH CTEs AS ( SELECT 1 AS id UNION ALL SELECT id + 1 FROM CTEs WHERE id <10 ) SELECT * FROM CTEs
Tabla Dinámica
Es la solución más ideal, ya que es una tabla xD, por lo tanto, la podemos utilizar para los siguientes querys, tanto como parte de las tablas a consultar, sub-query, etc.
SET nocount ON DECLARE @FirstTable TABLE (id INT) DECLARE @ii INT BEGIN TRANSACTION SET @ii = 0 WHILE @ii < 100000 BEGIN INSERT INTO @FirstTable VALUES (@ii); SET @ii = @ii + 1 END SELECT * FROM @FirstTable;