Amigos estoy intentando usar la funcion crosstab, pero segun leo hay que instalar el soporte de esta,como deberia hacer para instalar esta funcion y poder usarla.
Logre instalar la funcion, solo hay que ejecutar el scrip tablefunc.sql que se encuenta dentro de la carpeta contrib, en windows que es lo qu utilizo queda en la siguiente ruta.
Hola a todos!! En vista de que instalaron y probaron el crosstab quisiera saber si me podrían ayudar con un problema que tengo:
Estoy nueva en el uso de la función y el detalle esta en que me ejecuta bien solo que me esta colocando los valores de todos los atributos en una misma columna a pesar de que le especifique el la lista de campos, lo que tengo es algo mas o menos asi:
select * from crosstab('select str_rubro_c, b.lng_idorganismo,sum(dbl_cantidad)
from plan_hortalizas.tbl_detalle_disponibilidad a
join plan_hortalizas.tbl_disponibilidad b on a.lng_iddisponibilidad=b.lng_iddisponibilidad
join general.cat_clasif_rubro_sea c on c.lng_idclasif_rubro=a.lng_idclasif_rubro
join general.cat_organismos d on b.lng_idorganismo=d.lng_idorganismo
where b.lng_idmaestro_estatus=329 and dmt_fecha_dispon between ''2012-04-09'' and ''2012-04-13''
group by b.lng_idorganismo ,str_rubro_c
order by str_rubro_c,b.lng_idorganismo')
as lista(rubro character varying , org1 double precision,org2 double precision ,organ3 double precision,organ4 double precision,organ5 double precision,organ6 double precision);
el resultado que obtengo es :
ACHICORA y PEPINO pertenecen a organ1 pero COLIFLOR y LECHUGA pertenecen a organ3 y PEPINO tambien pertenece a organ2
y me aparecen todos en una misma columna.
en lineas generales lo que quiero que me muestre es lo siguiente :
rubro org1 org2 org3 ...
"ACHICORA" ;98 ; ; ;;;
"COLIFLOR" ; ; ; 700 ;;;
"LECHUGA" ; ; ; 300 ;;;
"PEPINO" ;143 ;41 ; ;;;
quien me ayuda por favor !!!!! ;) De antemano muchas gracias!
Si estas en windows, busca la carpeta donde instalastes PostgreSQL. Usualmente C://Archivos de programas/Postgresql, el fichero tablefunc.sql se encuentra de una carpeta que dice contrib. En redhat o Centos busca dentro de /usr/share/contrib.
Logre instalar la funcion,
Vie, 07/05/2010 - 22:45 — fsiguLogre instalar la funcion, solo hay que ejecutar el scrip tablefunc.sql que se encuenta dentro de la carpeta contrib, en windows que es lo qu utilizo queda en la siguiente ruta.
c:\Program Files\PostgreSQL\8.4\share\contrib\
Por si a alguien mas le interesa.
Saludos
Excelente post
Sáb, 09/04/2011 - 03:38 — Anónimobueno pues si encontre el archivo y ya lo ejecute en la base que quiero utilizar el crosstab ahora a probar....
recomentando el post
Lun, 09/05/2011 - 06:38 — Anónimoregrese a decir que si sirve!! mu buen aporte gracias
Gracias, me salvaste!!!
Dom, 04/09/2011 - 22:45 — AnónimoExcelente aporte, yo andaba medio perdido y mañana es mi entrega.
Saludos
Ayuda con crosstab
Jue, 12/04/2012 - 20:30 — AnónimoHola a todos!! En vista de que instalaron y probaron el crosstab quisiera saber si me podrían ayudar con un problema que tengo:
Estoy nueva en el uso de la función y el detalle esta en que me ejecuta bien solo que me esta colocando los valores de todos los atributos en una misma columna a pesar de que le especifique el la lista de campos, lo que tengo es algo mas o menos asi:
select * from crosstab('select str_rubro_c, b.lng_idorganismo,sum(dbl_cantidad)
from plan_hortalizas.tbl_detalle_disponibilidad a
join plan_hortalizas.tbl_disponibilidad b on a.lng_iddisponibilidad=b.lng_iddisponibilidad
join general.cat_clasif_rubro_sea c on c.lng_idclasif_rubro=a.lng_idclasif_rubro
join general.cat_organismos d on b.lng_idorganismo=d.lng_idorganismo
where b.lng_idmaestro_estatus=329 and dmt_fecha_dispon between ''2012-04-09'' and ''2012-04-13''
group by b.lng_idorganismo ,str_rubro_c
order by str_rubro_c,b.lng_idorganismo')
as lista(rubro character varying , org1 double precision,org2 double precision ,organ3 double precision,organ4 double precision,organ5 double precision,organ6 double precision);
el resultado que obtengo es :
rubro org1 or2 or3....
"ACHICORA" ;98 ; ; ;;;
"COLIFLOR" ;700 ; ; ;;;
"LECHUGA" ;300 ; ; ;;;
"PEPINO" ;143 ;41 ; ;;;
ACHICORA y PEPINO pertenecen a organ1 pero COLIFLOR y LECHUGA pertenecen a organ3 y PEPINO tambien pertenece a organ2
y me aparecen todos en una misma columna.
en lineas generales lo que quiero que me muestre es lo siguiente :
rubro org1 org2 org3 ...
"ACHICORA" ;98 ; ; ;;;
"COLIFLOR" ; ; ; 700 ;;;
"LECHUGA" ; ; ; 300 ;;;
"PEPINO" ;143 ;41 ; ;;;
quien me ayuda por favor !!!!! ;) De antemano muchas gracias!
Crosstab
Mié, 25/04/2012 - 22:57 — AnónimoEn la ruta indicada no esta el archivo tablefunc.sql... :( de donde puedo bajarlo??
Sobre ubicacion de crosstab.
Lun, 30/04/2012 - 17:54 — lgarciamSi estas en windows, busca la carpeta donde instalastes PostgreSQL. Usualmente C://Archivos de programas/Postgresql, el fichero tablefunc.sql se encuentra de una carpeta que dice contrib. En redhat o Centos busca dentro de /usr/share/contrib.
Saludos.