numeros iterativos en tabla temporal con sql server

Apr 08, 2013 No Comments by

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;
Databases

About the author

Ingeniero en Informática, Oracle Certified Master Java EE 6 Enterprise Architect, Oracle Certified Professional Java Programmer. Experto en distintas ramas de la computación y otras "yerbas" xD. Si te gusto este post, sígueme en @deerme_org, escríbeme a info AT deerme.org o contactame por linkedin.
No Responses to “numeros iterativos en tabla temporal con sql server”

Leave a Reply


four - 1 =