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.


    <http://www.uci.cu/>

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


<http://www.uci.cu/>


<http://www.uci.cu/>
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





10mo. ANIVERSARIO DE LA CREACION DE LA UNIVERSIDAD DE LAS CIENCIAS 
INFORMATICAS...
CONECTADOS AL FUTURO, CONECTADOS A LA REVOLUCION

http://www.uci.cu
http://www.facebook.com/universidad.uci
http://www.flickr.com/photos/universidad_uci

Responder a