FoxPro/Visual FoxPro - Diseñar Consulta

 
Vista:
Imágen de perfil de Antonio

Diseñar Consulta

Publicado por Antonio (3 intervenciones) el 29/10/2015 13:29:57
Buenos dias colegas! Estoy tratando de hacer una consulta convitiendo filas en columnas, pero aun me esta siendo dificil llegar a mi objetivo, les quiero mostrar un ejemplo si me podrian ayudar a ver que estoy haciendo mal o si me faltara algo.

SELECT nro_autorizacion,pago,YEAR(fecha_venc)as año,MONTH(fecha_venc)as mes,iif(MONTH(fecha_venc)=1,pago,000000000)as enero, iif(MONTH(fecha_venc)=2,pago,000000000)as febrero, iif(MONTH(fecha_venc)=3,pago,000000000)as marzo, iif(MONTH(fecha_venc)=4,pago,000000000)as abril,iif(MONTH(fecha_venc)=5,pago,000000000)as mayo,iif(MONTH(fecha_venc)=6,pago,000000000)as junio,iif(MONTH(fecha_venc)=7,pago,000000000)as julio,iif(MONTH(fecha_venc)=8,pago,000000000)as agosto, iif(MONTH(fecha_venc)=9,pago,000000000)as septiembre, iif(MONTH(fecha_venc)=10,pago,000000000)as octubre, iif(MONTH(fecha_venc)=11,pago,000000000)as noviembre, iif(MONTH(fecha_venc)=12,pago,000000000)as diciembre from lista7;
where nro_autorizacion = 941 AND pago > 0 into cursor lista

con este select obtengo esta consulta
consulta1

Luego:

SELECT nro_autorizacion,SUM(enero)as ENERO,SUM(febrero) as FEBRERO,SUM(marzo) as MARZO,SUM(abril) as ABRIL,SUM(mayo) as Mayo,SUM(junio)as Junio,SUM(julio) as Julio,SUM(agosto) as Agosto,SUM(septiembre) as Septiembre,SUM(octubre) as Octubre,SUM(noviembre) as Noviembre,SUM(diciembre) as Diciembre FROM lista ;
ORDER BY nro_autorizacion WHERE nro_autorizacion = 941 ;
GROUP BY nro_autorizacion ;
INTO CURSOR lista_2

con este otro obtengo esta:


CONSULTA2

pero hasta ahi, me objetivo seria esto:


CONSULTA-ORIGINAL

no se que estaria haciendo mal o que me faltaria para lograr esta consulta, por favor si podrian darme una mano o guiarme como hacer mejor el select, desde ya muchas gracias amigos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Abel
Val: 642
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Diseñar Consulta

Publicado por Abel (286 intervenciones) el 02/11/2015 14:56:44
Hola Antonio, no se si comprendí bien tu consulta... pero por que en la lista 2 no pruebas agruparlo además por año, así tendrás separado tanto nro de autorización y la suma de meses por año.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antonio

Diseñar Consulta

Publicado por Antonio (3 intervenciones) el 02/11/2015 19:00:34
Que tal Abel? Ya probe de esa forma tambien y obtuve esta consulta:
consulta_resultado

Pero la idea es obtener algo igual a la consulta Original, que deacuerdo al año vaya creciendo mis columnas a la derecha, asi mismo como esta en la imagen!

Muchas gracias Abel por la sugerencia!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Abel
Val: 642
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Diseñar Consulta

Publicado por Abel (286 intervenciones) el 02/11/2015 19:30:32
Se me ocurre así de pronto que podrías desde la primer consulta o incluso antes crear una tabla cursor:

dAnio = "2014"
CREATE CURSOR NombreTabla (("Ene"+dAnio) n(10,2), (("Feb"+dAnio) n(10,2),... ("Dic"+dAnio) n(10,2))

Esto te crearía una tabla tipo Cursor con campos Ene2014, Feb2014...Dic2014 (tipo númerico 10,2).
Allí vuelcas toda la información del Año 2014 (por ejemplo).

NOTA: En ésta tabla Cursor el tamaño de los campos solo son 10 caracteres por lo que por ejemplo Febrero2014 (tiene 11 y daría error), lo mismo pasaría con Diciembre2014 que tiene 13 caracteres.

Luego usas para los siguientes años el comando:

dAnio = "2015"
ALTER TABLE NombreTabla ADD COLUMN ("Ene"+dAnio) n(10,2)
ALTER TABLE NombreTabla ADD COLUMN ("Feb"+dAnio) n(10,2)
...
ALTER TABLE NombreTabla ADD COLUMN ("Dic"+dAnio) n(10,2)

y nuevamente cargas allí los datos de ese año y meses.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar