Последняя дата вступления в силу - с нулевым столбцом в sql - PullRequest
0 голосов
/ 07 октября 2019

У меня есть таблица asg_table со столбцами effective_start_date и effective_end_date.

asg_table :

asg_number     effective_start_date  effective_end_date   location        department        action_code
1                01-jan-2018           20-jan-2018                         HR                 HIRE     
1                21-JAN-2018           18-FEB-2018         Vietnam        HR                 CHANGE_ASG
1                19-FEB-2018           28-feb-2018         Vietnam         Manegment          TERMINATION
1                01-jul-2018           31-Dec-2019                          Payroll            HIRE
1                01-jan-2019            31-dec-4712        Peru              Payroll           CHANGE_ASG
2                01-feb-2019           01-apr-2019                         HR                 HIRE
2                02-APR-2019           31-DEC-4712         Vietnam         Payroll            CHANGE_ASG

Я хочу создать такой запросчто приходит последняя дата эффективное_старт с HIRE кода_ действия, местоположение которой равно нулю, т. е. в этом случае asg_number 1 должен вернуть 01-июль-2018 в качестве значения_действия_файла, где местоположение равно нулю. в случае asg_number 2 запрос должен вернуть 01-feb-2019, где location равно null

Есть ли функция для поиска последней датыative_start_Date?

Я нашел последний пост для первогоffective_start_Date полезным, ноэто находит ПЕРВУЮ ЭФФЕКТИВНУЮ ДАТУ НАЧАЛА, А НЕ ПОСЛЕДНЮЮ.

Select * from
  (Select t.*, 
  Row_number() over 
  (partition by t.employee_id order by t.effective_start_date) as rn
  From asg_table t
  Where t.location is null 
  AND t.action_code = 'HIRE')
Where rn = 1;

Ответы [ 3 ]

1 голос
/ 07 октября 2019

Я думаю, вы просто хотите desc для заказа:

Select *
from (Select t.*, 
             Row_number() over (partition by t.employee_id order by t.effective_start_date desc) as rn
      From asg_table t
      Where t.location is null and t.action_code = 'HIRE'
     )
Where rn = 1;
0 голосов
/ 07 октября 2019

Используйте asg_number вместе с employee_id и order by должно быть desc

Select * from
  (Select t.*, 
  Row_number() over 
  (partition by t.employee_id, t.asg_number order by t.effective_start_date desc) as rn
  From asg_table t
  Where t.location is null 
  AND t.action_code = 'HIRE')
Where rn = 1;

Cheers !!

0 голосов
/ 07 октября 2019

вам нужно заказать в порядке убывания

   Select * from
      (Select t.*, 
      Row_number() over 
      (partition by t.employee_id order by t.effective_start_date desc) as rn
      From asg_table t
      Where t.location is null 
      AND t.action_code = 'HIRE')
    Where rn = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...