select 
   case sexo when 'M' then nombres||' '||apellidos else '' AS "varones",
   case sexo when 'F' then nombres||' '||apellidos else '' AS "mujeres"
from clientes

Si haces full scan o sea que traes a todos entiendo que no vas a tener
problemas de performance.

? hembras? jajaja
-------------------------------------------------------------

Hola a Todos!!

Tengo una tabla llamada cliente

create table cliente(
codigo serial primary key,
nombres varchar(100),
apellidos varchar(100),
sexo char(1)
)

y necesito presentar los datos de la siguiente manera:

Varones                               Hembras

Jose Lopez                            Maria Jimenez
Luis Agosto                           Carolina Disla
Domingo Almanzar   
Juan Duran




-- 


Carlos Enrique Perez    
Direccion Syswarp SRL
www.syswarp.com.ar

"Los sistemas basados en Linux se encuentran en 446 de los 500
supercomputadores más potentes del mundo." 

El mar, 24-07-2012 a las 16:11 +0000, José Fermín Francisco Ferreras
escribió:
> 
> 
> 
> ing. José Fermín Francisco Ferreras 
> San Francisco de Macorís, Rep. Dom. 
> 
> 
> 
> 
> 
> 
> 
> 
> ______________________________________________________________________
> Date: Tue, 24 Jul 2012 10:24:34 -0400
> From: asotolo...@uci.cu
> To: josefermi...@hotmail.com
> CC: pgsql-es-ayuda@postgresql.org
> Subject: Re: [pgsql-es-ayuda] Tabla cliente y dividirla por sexo
> 
> El 22/07/2012 20:42, José Fermín Francisco Ferreras escribió: 
> 
>         Gracias a Anthony y a Armando por sus respuestas!! 
>         
>         
>         
>         Estuve probando la opcion de usar WITH y los resultados no me
>         lo da como requiero.
>         El resultado es de esta manera:
>         
>         
>         
>         with Va as (SELECT nombres||' '||apellidos AS "varones"
>         FROM cliente
>         WHERE sexo='M'),
>         He as (SELECT nombres||' '||apellidos AS "hembras"
>         FROM cliente
>         WHERE sexo='F' )
>         
>         select Va.varones, He.hembras from Va,He
>         
>         
>           Varones                                Hembras
>         MICHAEL JORDAN           MARIA SHARAPOVA
>         MICHAEL JORDAN           ANNA KOURNIKOVA
>         ALBERT PUJOLS               MARIA SHARAPOVA"
>         ALBERT PUJOLS               ANNA KOURNIKOVA"
>         MIKE TYSON                    MARIA SHARAPOVA"
>         MIKE TYSON                    ANNA KOURNIKOVA"
>         
>         
>         
>         
>         En verdad nunca había utilizado la instrucción with.
>         
>         
>         La parte final la modifiqué de la siguiente manera:
>         
>         
>         select va.varones, he.hembras from Va full outer join He on
>         (va.codigo=he.codigo);
>         
>         
>         Pero el resultado tampoco es el esperado:
>         
>         
>         Varones                               Hembras
>         MICHAEL JORDAN
>         ALBERT PUJOLS
>         MIKE TYSON
>         
>         
>                                                 ANNA KOURNIKOVA
>                                                 MARIA SHARAPOVA
>         
>         
>         Se necesita que salga de esta manera:
>         
>         
>         Varones                               Hembras
>         MICHAEL JORDAN             ANNA KOURNIKOVA
>         ALBERT PUJOLS                MARIA SHARAPOVA
>         MIKE TYSON
>         
>         
>         
>         
>         Nota:
>         Utilizo postgresql 9.1 en ubuntu 12.04
>         
>         
>         
>         
>         ing. José Fermín Francisco Ferreras 
>         San Francisco de Macorís, Rep. Dom. 
>         
>         
>         
>         
>         
>         
>         ______________________________________________________________
>         Date: Sun, 22 Jul 2012 12:48:43 -0400
>         From: asotolo...@uci.cu
>         To: josefermi...@hotmail.com
>         CC: pgsql-es-ayuda@postgresql.org
>         Subject: Re: [pgsql-es-ayuda] Tabla cliente y dividirla por
>         sexo
>         
>         El 21/07/2012 12:52, José Fermín Francisco Ferreras escribió: 
>         
>                 Hola a Todos!!
>                 
>                 Tengo una tabla llamada cliente
>                 
>                 create table cliente(
>                 codigo serial primary key,
>                 nombres varchar(100),
>                 apellidos varchar(100),
>                 sexo char(1)
>                 )
>                 
>                 y necesito presentar los datos de la siguiente manera:
>                 
>                 Varones                               Hembras
>                 
>                 Jose Lopez                            Maria Jimenez
>                 Luis Agosto                           Carolina Disla
>                 Domingo Almanzar   
>                 Juan Duran
>                 
>                 osea los datos estan todos en una misma tabla y de
>                 manera desordenada y se necesita presentarlo de la
>                 manera anterior.
>                 
>                 Mi pregunta es:
>                 
>                 Se puede trabajar este caso con cursores y tablas
>                 temporales o bien podría hacerse con una consulta SQL,
>                 y cual es la manera más eficiente de hacerlo de los
>                 dos casos??
>                 
>                 
>                 
>                 
>                 ing. José Fermín Francisco Ferreras 
>                 San Francisco de Macorís, Rep. Dom. 
>                 
>                 
>                 
>                 
>         
>         Buenos días según entiendo necesitas los datos resultados en
>         una misma consulta ,si estas en una versión superior a 8,4 de
>         postgresql  puedes utilizar las CTE con la clausula with
>         
>         ejemplo
>         with Va as (SELECT nombres||' '||apellidos AS "varones"
>         FROM cliente
>         WHERE sexo='M'),
>         He as (SELECT nombres||' '||apellidos AS "hembras"
>         FROM cliente
>         WHERE sexo='F' )
>         
>         select Va.varones, He.hembras from Va,He
>         
>         
>         saludos
>         
>         
>         
>         
>         
>         
> 
> Hola José , ya tengo algo que te puede ayudar mira vas a tener que
> usar funciones ventanas como row_number() [numera las filas por un
> orden determinado]
> y en con la clausula with realiza un full join por el id creado por el
> row_number()   :D
> 
> 
> Aqui la posible solución :
> 
> with Va as (SELECT   nombre AS "varones", row_number() over (order by
> nombre) as id
> FROM cliente1
> WHERE sexo='M'),
> He as (SELECT nombre AS "hembras",row_number() over  (order by
> nombre)as id
> FROM cliente1
> WHERE sexo='F' )
> 
> select  Va.varones,  He.hembras from Va left join He using (id)
> si resultado
> 
> "Anthony";"Claudia"
> "Armando";"Fina"
> "Juan";""
> "Yoan";""
> "Felipe";""
> "Cuco";""
> 
> 
> saludos
> 
> 
> Gracias por tu magistral aporte Anthony!!
> 
>     
> 
> 
> 
> 

Responder a