;WITH miCTEdias AS
(
SELECT CAST('20130101' AS DATE) as fecha
UNION ALL
SELECT DATEADD( d , 1 ,fecha ) as fecha
FROM miCTEdias
WHERE fecha < CAST('20130110' AS DATE)
)
SELECT * FROM miCTEdias;
;WITH miCTEmeses AS
(
SELECT CAST('20120601' AS DATE) as fecha
UNION ALL
SELECT DATEADD( m , 1 ,fecha ) as fecha
FROM miCTEmeses WHERE fecha < CAST('20130501' AS DATE)
)
SELECT * FROM miCTEmeses;
;WITH miCTEhrs AS
(
SELECT CAST('00:00:00' AS TIME) as hora
UNION ALL
SELECT DATEADD( HH , 1 ,hora ) as hora
FROM miCTEhrs WHERE hora < CAST('23:00:00' AS TIME)
)
SELECT * FROM miCTEhrs;
;WITH miCTEmediaHrs AS
(
SELECT CAST('00:00:00' AS TIME) as hora
UNION ALL
SELECT DATEADD( MINUTE , 30 ,hora ) as hora
FROM miCTEmediaHrs WHERE hora < CAST('23:30:00' AS TIME)
)
SELECT * FROM miCTEmediaHrs;
Ahora les dejo otros ejemplos para calcular una secuencia de números, la serie de fibonacci y el factorial:WITH cte AS( SELECT 1 AS numero UNION ALL SELECT numero+1 FROM cte WHERE numero < 1000 ) SELECT * FROM cte OPTION ( MAXRECURSION 0 ) --fibonacci ;WITH cteFib AS( SELECT 1 AS numero, CAST( 0 AS BIGINT ) as fibonacci, CAST( 1 AS BIGINT ) AS numero1ant UNION ALL SELECT numero+1, fibonacci + numero1ant, fibonacci FROM cteFib WHERE numero < 50 ) SELECT numero, fibonacci FROM cteFib WHERE numero < 20 OPTION ( MAXRECURSION 0 ) --factorial ;WITH cteFac AS( SELECT 0 AS numero, CAST( 1 AS BIGINT ) AS factorial UNION ALL SELECT numero+1, (numero+1)*factorial FROM cteFac WHERE numero < 20 ) SELECT * FROM cteFac WHERE numero < 10 OPTION ( MAXRECURSION 0 )Espero que les sea de ayuda.
SALUDOS!
COMPARTE ESTA INFORMACION SI TE PARECIO INTERESANTE


0 comentarios:
Publicar un comentario