2015-11-22 3 views
-1

У меня есть таблица Employee, одним из ее атрибутов является «Пол». В колонке «Пол» у нас есть два типа записей «мужчина» или «женщина». Теперь я должен написать запрос, который должен дать мне вывод, как 1-я запись должна быть для «Мужской», 2-й альбом для «Женский», 3-й для ' Male ', Четвертый для' Женщины '.Нужна помощь для получения правильного запроса sql

Я использовал ниже запрос для выборки записи, как выше

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; 

, но этот запрос не сможет извлечь требуемую мощность. Может кто-нибудь дать мне синтаксис, пожалуйста.?

+0

'гп = ...' недействителен SQL. Вы не можете назначать такие переменные. Если вы хотите присвоить значение переменной, вам понадобится PL/SQL и 'select .. in ..' –

ответ

1

Это следует сделать это:

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 

row_number() over (partition by gender ..) будет насчитывать все самка от 1 до й и всех лиц мужского пола от 1 до х. При заказе внешнего запроса с использованием этого значения конечный вывод будет иметь первую женщину, затем первый самец, вторую женщину, второй самец и так далее.

SQLFiddle пример: http://sqlfiddle.com/#!4/23f656/2

Смежные вопросы