需要帮助才能获得正确的sql查询吗

需要帮助才能获得正确的sql查询吗,sql,oracle,Sql,Oracle,我有一个表Employee,它的属性之一是“性别”。在性别栏中,我们有两种类型的记录“男性”或“女性” 现在我想写一个查询,它应该给我一个输出,比如第一条记录应该是“男性”,第二条记录是“女性”,第三条记录是“男性”, 第四名为“女性” 我使用下面的查询来获取上述记录 select name, empid, salary, gender, rownum rn, case gender when 'Male' then rn = (select * from (select rownum

我有一个表Employee,它的属性之一是“性别”。在性别栏中,我们有两种类型的记录“男性”或“女性” 现在我想写一个查询,它应该给我一个输出,比如第一条记录应该是“男性”,第二条记录是“女性”,第三条记录是“男性”, 第四名为“女性”

我使用下面的查询来获取上述记录

select name, empid, salary, gender, rownum rn, case gender when 'Male' then 
    rn = (select * from (select rownum rn  from Employee) where mod (rn, 2) <> 0)
    else rn = (select * from (select rownum rn  from Employee) where mod (rn, 2) = 0) end as Org_Gender form employee;
但此查询无法获取所需的输出。 有人能告诉我语法吗?

这应该可以:

select empid, name, gender
from (
  select name, empid, gender,
         row_number() over (partition by gender order by name) as rn
  from employee
) t
order by rn, gender
按性别划分的行数。。将从1到x对所有雌性进行编号,从1到x对所有雄性进行编号。通过使用该值对外部查询进行排序,最终输出将有第一个女性,然后是第一个男性,第二个女性,第二个男性,依此类推

SQLFIDLE示例:

rn=。。。是无效的SQL。你不能这样分配变量。如果要为变量赋值,需要PL/SQL并选择。。进入