Gracias hermano Cachique, me funcionó muy bien tu ayuda.

ing. Jos?? Ferm??n Francisco Ferreras
San Francisco de Macor??s, Rep. Dom.
________________________________
De: Cachique <cachi...@gmail.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 
<josefermi...@hotmail.com<mailto:josefermi...@hotmail.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

Responder a