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