Tengo esta tabla simple:

Name
-----
test1
test2
test3

Y necesito construir algo como esto:

Name    Year    Month
---------------------
Test1   2016    1
Test1   2016    2
Test1   2016    3
Test1   2016    …
Test1   2016    12
Test2   2016    1
Test2   2016    2
Test2   2016    3
Test2   2016    …
Test2   2016    12
Test1   2017    1
Test1   2017    2
Test1   2017    3
Test1   2017    …
Test1   2017    12
Test2   2017    1
Test2   2017    2
Test2   2017    3
Test2   2017    …
Test2   2017    12

¿Alguien puede darme una pista por favor?

Gracias de antemano.

-2
Mac 20 oct. 2017 a las 16:59

3 respuestas

La mejor respuesta

Seleccione * de mytable Cross date date

Ha sido una semana dura, gracias por la ayuda de todas.

0
Mac 20 oct. 2017 a las 14:17

Use una tabla de calendario, absolutamente invaluable.

Aquí hay un tutorial por Aaron Bertrand de SentryOne.

0
Mazhar 20 oct. 2017 a las 14:05

Otra opción rápida si no tienes una tabla de calendario

Select * 
 From  YourTable
 Cross Join ( values (2016),(2017) ) Y(Year)
 Cross Join ( values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12) ) M(Month)
2
John Cappelletti 20 oct. 2017 a las 14:05