Autor: Rafal Skotak
http://www.sqlservercentral.com/scripts/61949/
Select dt_val from (
–Matriz cruzada de valores numericos
select
dateadd(dd, value, dateadd(month, 8 – 1, dateadd(year, 2008 – 1900, ‘1900.01.01 00:00:00.000’))) as dt_val
from(
select (v2 * 4 + v1) * 4 + v0 as value from
(select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join
(select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join
(select 0 as v2 union select 1 union select 2 union select 3) as rs2
) as rs
–fin de matriz
) as rs2
where month(dt_val) = 8
order by dt_val
Encontré este script el día de ayer, buscando alternativas para un problema que necesito solucionar en mi trabajo.
Aunque no es la solución que actualmente necesito, es bastante bueno para la agilidad mental de la solución de problemas de datos en SQL
En si lo que estamos viendo es una tabla derivada, la cual convierte valores numéricos en fechas, es decir, la tabla mas interna es en si una matriz cruzada de valores, la cual servirá para proveer valores a la tabla derivada, para que esta a su vez utilice dichos valores en las funciones de conversión de fechas
El script se puede correr en dos partes para obtener un entendimiento mas amplio.
-Nota importante: Este script debe ser considerado EVIL SQL, ya que hace uso de una tecnica Cross Join, lo cual puede comprometer el desempeño de un proceso.
Iaax Page
Muy gran aporte, ya lo revise y si es muy estable, Gracias!