Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Necesito obtener una tabla detallada de todos los meses comprendidos en un rango de fechas de una tabla inicial

Consulta!

Tengo una tabla como la siguiente:

ID

AñoInicio

MesInicio

AñoFin

MesFin

13

2012

4

2012

12

Lo que necesito obtener es lo siguiente:

ID

Año

Mes

13

2012

4

13

2012

5

13

2012

6

13

2012

7

13

2012

8

13

2012

9

13

2012

10

13

2012

11

13

2012

12

Alguien sabe como armarlo?

Gracias!

3 Replies
Not applicable
Author

Hola Matias

seria mejor en inglese pero yo traigo

necessite de hacer un "outer join" entre tu primera tabla y una otra que tiene todo los meses que quieres

LA secunda puede venir de una tabla existante (ventas por ejemplo :  LOAD distinct ano, mes from ventas)  or con LOAD * INLINE [ano, mes];

LOAD * from T1;

outer join

LOAD * FROM T2;

Pones la misma llave entre los dos tablas (por ejemplo %D  = makedate(ano, mes) )

Chris

Nicole-Smith

Data:

LOAD * INLINE [

ID,AñoInicio,MesInicio,AñoFin,MesFin

13,2012,4,2012,12

];

Final:

LOAD ID,

     year(addmonths(makedate(AñoInicio, MesInicio), iterno()-1)) as Año,

     num(month(addmonths(makedate(AñoInicio, MesInicio), iterno()-1))) as Mes

RESIDENT Data

while addmonths(makedate(AñoInicio, MesInicio), iterno()-1) <= makedate(AñoFin, MesFin);

DROP TABLE Data;

Not applicable
Author

Cuadro1:

LOAD * INLINE

[

ID,AñoInicio,MesInicio,AñoFin,MesFin

13,2012,4,2012,12

];

Final:

    LOAD

    ID,

    AñoFin as Año,

    MesInicio as Mes RESIDENT Cuadro1;

   

   

FOR i=1 to 8

    LET vMes = PEEK('Mes');

    LOAD

    ID,

    AñoFin as Año,

    $(vMes) + 1 as Mes

    RESIDENT Cuadro1;

   

NEXT i

DROP TABLE Cuadro1;