Как дать ярлык только для максимальных записей - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть данные, как показано ниже, enter image description here

Люди, которые присоединились к моей компании, назначат систему или ноутбук, назначение также произойдет до присоединения

Мне нужно добавить еще один столбец "Updated_flag", который имеет значение флага "Y" для людей, у которых joining_date_time> system_assign_time, и это "Y" для максимального значения system_assign_time.

Длялюди, чье joining_date_time

enter image description here

для empid 101 -> max (system_assign_time) равно «2019-03-21 13:21:05 UTC», поэтому обновленный флаг«Y» для этой записи.

для empid 102 -> max (system_assign_time) равно «2018-0722 14:31:14 UTC», поэтому значение параметра updated_flag для этой записи равно «Y»

для 103 нет изменений, потому что joining_date_time меньше, чем system_assign_time.

Пожалуйста, помогите мне в этом ..!

Спасибо

Ответы [ 3 ]

1 голос
/ 02 апреля 2019

Я думаю, что вы можете использовать функцию over () здесь ...

SELECT *, 
    CASE WHEN joining_date_time>system_assign_time THEN
        RANK() OVER (PARTITION BY emp_id ORDER BY system_assign_time DESC) 
    ELSE 2 
    END =1 AS flag 
FROM tablename

Примечание: используется логическое значение вместо 'y' и 'n', потому что оно более уместно

1 голос
/ 02 апреля 2019

использовать скалярный подзапрос с CASE WHEN Expression

select *,
case when system_assign_time=(select max(system_assign_time) 
      from tablename b where a.empid=b.empid ) then 'Y' else 'N' end as updated_flag
from tablename a
0 голосов
/ 02 апреля 2019

Вы можете использовать объединение в группе максимального времени по empid

select a.empid, a.joining_date_time, a.system_assign_time, a.flag
  , case when b.max_time = a.System_assign_time THEN 'Y' ELSE a.flag END update_flag
from  my_table a 
inner join  (
  select  empid, max(System_assign_time)  max_time
  from my_table 
  group by empid  
  ) on a.empid = b.empid 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...