RE: Convertir filas en columnas o Funcion de agregado (concaten

From: "Edwin Quijada" <listas_quijada(at)hotmail(dot)com>
To: alberto(dot)pina(at)kebir(dot)com(dot)mx
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: RE: Convertir filas en columnas o Funcion de agregado (concaten
Date: 2005-07-07 21:12:34
Message-ID: BAY14-F6B4C86C149F5A9031BCDBE3D80@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Bien hecho!!
Asi se hace.

*-------------------------------------------------------*
*-Edwin Quijada
*-Developer DataBase
*-JQ Microsistemas
*-809-747-2787
* " Si deseas lograr cosas excepcionales debes de hacer cosas fuera de lo
comun"
*-------------------------------------------------------*

>From: "Alberto Piña" <alberto(dot)pina(at)kebir(dot)com(dot)mx>
>To: <pgsql-es-ayuda(at)postgresql(dot)org>
>Subject: [pgsql-es-ayuda] Convertir filas en columnas o Funcion de agregado
>(concatenar)
>Date: Thu, 7 Jul 2005 11:18:53 -0500
>
>Saludos Lista.
>Espero que esto le ayude a algunos que han tenido el mismo problema que yo.
>Estuve buscando por la red como convertir filas en columnas, aunque en
>realidad no era precisamente lo que estaba buscando. les explico mi caso.
>Supongan una tabla con esta
>
>Select * from tabla;
>
>Columna1 | Columna2
>================
> a | v1
> a | v3
> b | v2
> b | v4
>
>Y necesitan regresar algo como esto
>
>Col1 | Col2
>=========
> a | v1,v3
> b | v2,v4
>
>La primera solucion que encontre fue hacer una funcion que segun el valor
>de
>columna 1 concatenara columna 2 a si misma y regresara dicho resultado,
>todo
>iba bien con 5 o 10 registros, el problema es que en grandes cantidades de
>registros mi query se tardaba mucho en regresar el resultado de dicha
>funcion. Se que tal vez con los indices correctos o con un buen tuning de
>mi base de datos, o tal vez con un mejor diseño de mi funcion hubiera
>podido
>reducir el tiempo de respuesta de mi query, pero la verdad es que lo que
>encontre estuvo mucho mas rapido y creo yo mejor implementado.
>
>Lo que encontre es una funcion de agregado que te permite a traves de un
>query como
>SELECT columna1 , list(columna2) FROM tabla GROUP BY columna1
>Obtener el resultado deseado.
>
>El codigo de la funcion y el type list es
>
>CREATE FUNCTION comma_cat (text, text) RETURNS text
>AS 'select case
>WHEN $2 is null or $2 = '''' THEN $1
>WHEN $1 is null or $1 = '''' THEN $2
>ELSE $1 || '', '' || $2
>END'
>LANGUAGE sql;
>
>
>CREATE AGGREGATE list (
>BASETYPE = text,
>SFUNC = comma_cat,
>STYPE = text,
>INITCOND = ''
>);
>
>El que dio la respuesta en el foro es Luis C. Ferreira (honor a quien honor
>merece).
>http://www.webservertalk.com/archive143-2004-1-94830.html
>
>Espero que a alguien le sirva (asi como somos muy buenos para preguntar, es
>bueno tambien a veces aportar, espero haberlo hecho).
>Saludos a todos
>
>
>
>Atentamente
>
>Ing. Alberto Piña Uribe
>
>Consultoría y Desarrollo
>
>KEBIR Infraestructura Tecnológica
>
>
>
>alberto(dot)pina(at)kebir(dot)com(dot)mx
>
>Cel. 044-55-59-64-85-07
>
>Tel. 55-30-22-37
>
>Fax 55-38-88-49
>
>

_________________________________________________________________
Consigue aquí las mejores y mas recientes ofertas de trabajo en América
Latina y USA: http://latam.msn.com/empleos/

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Edwin Quijada 2005-07-07 21:18:45 Re: [pgsql-es-ayuda] Re: mayúsculas y minúsculas en postgress
Previous Message Edwin Quijada 2005-07-07 21:07:28 Re: Como puedo recuperar la BD postgres (Urgente)