Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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!
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
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;
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;