RE: Tabla cliente y dividirla por sexo

From: José Fermín Francisco Ferreras <josefermin54(at)hotmail(dot)com>
To: <asotolongo(at)uci(dot)cu>
Cc: Lista PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Tabla cliente y dividirla por sexo
Date: 2012-07-24 16:11:26
Message-ID: BAY169-W415A2C2D96C75AD66D30D0C6DC0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

ing. José Fermín Francisco Ferreras
San Francisco de Macorís, Rep. Dom.

Date: Tue, 24 Jul 2012 10:24:34 -0400
From: asotolongo(at)uci(dot)cu
To: josefermin54(at)hotmail(dot)com
CC: pgsql-es-ayuda(at)postgresql(dot)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: asotolongo(at)uci(dot)cu

To: josefermin54(at)hotmail(dot)com

CC: pgsql-es-ayuda(at)postgresql(dot)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!!

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message SYSWARP - Carlos Enrique Perez 2012-07-24 18:33:40 RE: Tabla cliente y dividirla por sexo
Previous Message Armando Venegas Pérez 2012-07-24 15:00:13 RE: Tabla cliente y dividirla por sexo