2016-12-02 6 views
0

У меня есть два стола emp1 и етр2 и я хочу получать альтернативные записи из таблицы, как нечетного и четного и 3 Макс Зарплата ЭМИЧтобы получить записи ALTERNATE из таблицы.

стол как emp1

empno empname empposition 
1  abc  Manager 
2  cef  Clark 
3  xyz  Supervisor 
4  pqr  Peon 
5  hij  Senior Manager 

таблица, как етр2

empno empname empsalary 
1  abc  25,000 
2  cef  15,000 
3  xyz  10,000 
4  pqr  5,000 
5  hij  35,000 
+3

Что вы пробовали? Покажите нам свою попытку, т.е. запрос, который вы написали до этого момента. – Igor

+0

Просьба привести пример результата. что ты уже испробовал? – Jens

+0

Мне нужны альтернативные записи из таблицы, а также третья наивысшая и самая низкая зарплата emp –

ответ

1

Вы можете попробовать следующее, он работал для меня.

Для извлечения четных строк:

SELECT * FROM table_name ГДЕ column_name% 2 = 0

Чтобы извлечь нечетные строки:

SELECT * FROM table_name ГДЕ column_name% 2 = 1

Надеюсь, это поможет!

0

Попробуйте это:

ДЛЯ ЗАПИСИ ODD

SELECT * FROM EMP1 INNER JOIN EMP2 ON EMP1.EMPNO=EMP2.EMPNO WHERE (EMP1.empno %2)<> 0 

ДЛЯ ЗАПИСИ ДАЖЕ

SELECT * FROM EMP1 INNER JOIN EMP2 ON EMP1.EMPNO=EMP2.EMPNO WHERE (EMP1.empno %2)= 0 

ТРЕТИЙ MAX ЗАРПЛАТА

SELECT TOP 1 EMPSALARY FROM EMP2 WHERE EMPSALARY NOT IN 
(SELECT TOP 2 EMPSALARY FROM EMP2 ORDER BY EMPSALARY DESC) 
ORDER BY EMPSALARY DESC 
+0

Кто сказал, что EMPNO строго последовательны? А как насчет равных зарплат? – Arvo

1

Лучший способ для извлечения четных и нечетных строк в SQL таблицы осуществляется с помощью RowNumber,

Declare @Emp2 Table (empno INT, empname VARCHAR(10), empsalary INT) 


INSERT INTO @Emp2 (empno,empname,empsalary) VALUES (1 , 'abc' , 25000) 
INSERT INTO @Emp2 (empno,empname,empsalary) VALUES (2 , 'cef' , 15000) 
INSERT INTO @Emp2 (empno,empname,empsalary) VALUES (3 , 'xyz' , 10000) 
INSERT INTO @Emp2 (empno,empname,empsalary) VALUES (4 , 'pqr' , 5000) 
INSERT INTO @Emp2 (empno,empname,empsalary) VALUES (5 , 'hij' , 35000) 

SELECT * 
FROM (
    SELECT *, Row_Number() OVER(ORDER BY empno) AS RowNumber 
      --Row_Number() starts with 1 
    FROM @Emp2 
) t 
WHERE t.RowNumber % 2 = 0 --Even 
--WHERE t.RowNumber % 2 = 1 --Odd 
1

Использование пыльник Queryfor Даже номер сотрудника

select empname as Employee,salary as Salary 
from emp2 
where empno in (
       select empno 
       from emp2 
       group by empno having empno%2=0 
       ) 

также использовать пыльник Query для Нечетное число сотрудников

select empname as Employee,salary as Salary 
from emp2 
where empno in (
       select empno 
       from emp2 
       group by empno having empno%2 <> 0 
       ) 
0

Я пробую это, и это сработало для меня, и я надеюсь, что это поможет вам.

(четный)

select * from emp1 where rowid in (select decode(mod(rownum,2),0,rowid, null) from emp1); 

(ODD ПРОНУМЕРОВАНЫ)

select * from emp1 where rowid in (select decode(mod(rownum,2),0,null ,rowid) from emp1); 

третий MAX зарплата

select distinct empsalary from emp2 e1 where 3 = (select count(distinct empsalary) from emp2 e2 where e1.empsalary <= e2.empsalary); 
Смежные вопросы