Saludos a todos los amigos de la comunidad. Les escribo porque tengo un problema y no logro encontrar una buena forma de resolverlo. Tengo una función para obtener reportes estadísticos donde debo retornar el nombre de las unidades organizativas, los nombres de los tipos de servicios y los totales, de la siguiente forma:
Unidad Tipo de servicio T1 T2 T3 T4 El problema es que entre la tabla de unidades organizativas y tipos de servicio no hay relación directa, sino a través de otras tablas del negocio. Necesito tirar todas las unidades contra todos los tipos de servicio. La solución que he dado hasta el momento es con un ciclo for recorrer la tabla tipo de servicio e ir calculando los totales e irlos insertando en una tabla temporal para al final devolver los valores, donde evidentemente esto provoca problemas de rendimiento, el código es el siguiente(cortado para no abrumar): for aid_elemento,adescripcion from vw_nmtipo_servicio order by tipo_servicio loop SQLText = 'INSERT INTO estadistico SELECT id, nombre, (SELECT COUNT(distinct vw_registro_expediente_incidencia.id) FROM vw_registro_expediente_incidencia WHERE ...) AS t1, (SELECT COUNT(distinct vw_registro_expediente_incidencia.id) FROM vw_registro_expediente_incidencia ...) AS t2, (SELECT COUNT(distinct vw_registro_expediente_incidencia.id) FROM vw_registro_expediente_incidencia ...) AS t3, (SELECT COUNT(distinct vw_registro_expediente_incidencia.id) FROM vw_registro_expediente_incidencia ...) AS t4 '''||adescripcion_elemento||'''::character varying as criterio1 FROM nmunidad_org WHERE (nmunidad_org.id IN ('||alista_id_nivel||'))'; execute SQLText; SQLText = ''; end loop; Espero que me puedan dar alguna recomendación para optimizar el diseño. Saludos, M.Sc. Esneiker Enriquez Cabrera Esp. B en Ciencias Informáticas Desoft en Ciego de Ávila. Joaquín de Aguero esq. Calle 2. Ciego de Ávila. Cuba. Telf.: 53 33 22 8971, email.: <mailto:eenriq...@cav.desoft.cu> eenriq...@cav.desoft.cu