Запрос Oracle и агрегатная функция - PullRequest
0 голосов
/ 03 мая 2018

У меня есть имя таблицы employee_1, предположим, в oracle. Если mobile_no и sim_no совпадают, я хочу выбрать максимальную дату начала. Я пытался, но безуспешно. Пожалуйста помоги Таблица employee_1 ниже

Mobile_No   Sim_NO      Start_Date         End_Date 
1111111111  1111111111  3/10/2017 21:02:44  10/10/2017 21:02:44
1111111111  1111111111  11/10/2017 21:02:44 13/10/2017 21:02:44
1111111111  1111111112  11/10/2017 21:02:44 13/10/2017 21:02:44
1111111111  1111111111  12/10/2017 21:02:44 

Я хочу отобразить 2 строки

1111111111  1111111111  12/10/2017 21:02:44
1111111111  1111111112  11/10/2017 21:02:44 13/10/2017 21:02:44

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Попробуйте, надеюсь, это соответствует вашим требованиям.

select mobile_no,sim_no,start_date,end_date from(
select mobile_no,sim_no,start_date,end_date,rank() over(partition by mobile_no,sim_no order by start_date desc) rn from employee_1)s
where rn=1
0 голосов
/ 03 мая 2018

ПРИМЕЧАНИЕ : Ваше определение, пример данных и ожидаемый результат не совпадают. Смотрите, что вы включаете в результат строку:

1111111111  1111111112  11/10/2017 21:02:44 13/10/2017 21:02:44

, где номера мобильных и SIM-карт разные.

Тем не менее, попробуйте это:

РЕДАКТИРОВАТЬ : TOP 1 был заменен на LIMIT 1 (Oracle).

SELECT LIMIT 1 Mobine_No , Sim_No , Start_Date , End_Date
  FROM YourTable
 WHERE Mobine_No = Sim_No 
ORDER BY Start_Date DESC ;

Альтернатива:

SELECT Mobine_No , Sim_No , MAX(Start_Date) , End_Date
  FROM YourTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...