2017-07-03 10:04 GMT-04:00 José Fermín Francisco Ferreras <
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