FoxPro/Visual FoxPro - SQL PIVOT

 
Vista:

SQL PIVOT

Publicado por PATRICK  (4 intervenciones) el 05/06/2008 22:04:40
Buenas tardes amigos, quisiera saber si alguien me puede ayudar con lo siguiente:

tengo una tabla que contiene 3 campos (codigo, mes y monto), la cual tiene la siguiente informacion:
CODIGO MES MONTO
0001 ENERO 15000
0001 FEBRERO 3500
0001 MARZO 2500
0001 ABRIL 6000
0001 MAYO 3000
0002 ENERO 1521
0002 FEBRERO 2525
0002 MARZO 3200
0002 ABRIL 4500
0002 MAYO 9800

mi intencion es efectuar una consulta cuya estrectura se convietrta de esta manera ( similar al de la tabla dinamica de excel), ose apasarlo de la siguiente manera

CODIGO ENERO FEBRERO MARZO ABRIL ....
0001 15000 3500 2500 6000...
0002 1521 2525 3200 4500...

Espero haber sido claro, gracias por anticipado por su atencion...
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

RE:SQL PIVOT

Publicado por saul (728 intervenciones) el 07/06/2008 03:01:42
1- Crea una tabla temporal

create cursor TuTablaTemp (,:
codigo c(4) ,:
mes1 c(15),:
mes2 c(15),:
mes3 c(15),:
mes4 c(15),:
mes5 c(15),:
mes6 c(15),:
mes7 c(15),:
Valor n(10,2))

y barres tu cursor

scan all
do case
case tuCampo $ "ENERO"
Guardar en Mes1
case tuCampo $ "FEBRERO"
Guardar en Mes1
endscan

SUERTE
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

RE:SQL PIVOT

Publicado por PATRICK (4 intervenciones) el 07/06/2008 03:56:26
Muchisimas gracias Raul, no me salio exactamente como lo pusiste, pero me dio una idea yya lo hice, de esta manera:

sele dist snp_cod, snp_mont as ene, snp_mont as feb, snp_mont as mar from snp_mes into table snp_xxx
blan fiel ene, feb, mar all

scan
ln_cod = snp_cod
sele snp_mes
scan for snp_cod = ln_cod
replace snp_xxx.ene with snp_mes.snp_mont for snp_mes.snp_mes = "ENERO" and snp_cod=ln_cod
replace snp_xxx.feb with snp_mes.snp_mont for snp_mes.snp_mes = "FEBRERO" and snp_cod=ln_cod
replace snp_xxx.mar with snp_mes.snp_mont for snp_mes.snp_mes = "MARZO" and snp_cod=ln_cod
endscan
sele snp_xxx
endscan

go top


GRACIAS.. SIEMPRE TAN OPORTUNOS
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