From: | José Fermín Francisco Ferreras <josefermin54(at)hotmail(dot)com> |
---|---|
To: | Cachique <cachique(at)gmail(dot)com> |
Cc: | Lista PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Alternar por sexo usando select |
Date: | 2017-07-03 16:06:26 |
Message-ID: | CY1PR16MB0490407E4D6FFB9ADCD0EEEAC6D60@CY1PR16MB0490.namprd16.prod.outlook.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Gracias hermano Cachique, me funcionó muy bien tu ayuda.
ing. Jos?? Ferm??n Francisco Ferreras
San Francisco de Macor??s, Rep. Dom.
________________________________
De: Cachique <cachique(at)gmail(dot)com>
Enviado: lunes, 3 de julio de 2017 02:32:11 p. m.
Para: José Fermín Francisco Ferreras
CC: Lista PostgreSQL
Asunto: Re: [pgsql-es-ayuda] Alternar por sexo usando select
2017-07-03 10:04 GMT-04:00 José Fermín Francisco Ferreras <josefermin54(at)hotmail(dot)com<mailto:josefermin54(at)hotmail(dot)com>>:
Bueno días!
Favor ayudarme con el siguiente caso tengo una tabla de clientes donde se guarda el sexo.
Quisiera ver la forma donde yo pueda visualizar los registros de mediante un select de manera alternada.
Ejemplo:
Necesito alternar la información de la siguiente manera: presentar los datos que se alternarlos por sexo (osea primero una mujer y luego un hombre, luego una mujer y después un hombre, así sucesivamente).
nombre, apellido, sexo
juana, garcía, femenino
pedro, lopez, masculino
maría, flores, femenino
luis, jimenes, masculino
ing. Jos?? Ferm??n Francisco Ferreras
San Francisco de Macor??s, Rep. Dom.
Hola.
Puedes usar funciones de ventana (row_number()) para asignar a cada registro el número de linea y con un simple cálculo hacer que el sexo femenino tenga números impares ((n * 2) - 1) y el sexo masculino tenga números pares (n * 2). Luego ordenar basado en esta columna calculada y ya está.
Te paso un ejemplo que lo puedes modificar a tu gusto.
select
nombre,
apellido,
sexo,
case
when sexo = 'femenino' then (row_number() over (partition by sexo)) * 2 - 1
when sexo = 'masculino' then (row_number() over (partition by sexo)) * 2
end orden
from mitabla
order by orden
Saludos,
Walter
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2017-07-03 19:08:13 | Re: Tablas anidadas tarda en responder |
Previous Message | Guillermo E. Villanueva | 2017-07-03 15:05:48 | Re: Tablas anidadas tarda en responder |