MS SQL Server Последний пользователь вошел в несколько клиентов с несколькими пользователями - PullRequest
0 голосов
/ 21 июня 2019

У меня есть таблица пользователей, в которой есть несколько клиентов с несколькими пользователями, и у каждого пользователя есть дата последнего входа в систему.Мне нужно получить дату последнего входа пользователя для каждого клиента.Я пробовал max (date), но это дает мне последнюю дату входа для каждого пользователя для каждого клиента.

Моя цель - получить по одному пользователю на клиента с самой последней датой входа в систему.

 SELECT DISTINCT(u.clientid),u.userid,Max(u.lastLogin) as lastLogin
 FROM users u
 WHERE u.clientid IN (10,20,30,40)
 GROUP BY u.clientid,u.userid,u.lastLogin

 clientid  userid  lastLogin
    10        1      a date
    10        2      a date
    10        3      a date
    20        4      a date
    20        5      a date
    30        6      a date
    30        7      a date
    30        8      a date
    30        9      a date
    and so on

Я ищу, где находится пользователь с самой последней датой входа в систему

    clientid  userid  lastLogin
      10        1      a date
      20        4      a date
      30        6      a date
    and so on

1 Ответ

0 голосов
/ 21 июня 2019

Вот пример сценария с использованием row_number () и CTE , чтобы получить пользователя каждого клиента, имеющего последний логин пожалуйста, обновите скрипт в соответствии с вашей структурой таблицы и именами столбцов.

declare @mytable as table(client varchar(50),myuser varchar(50),lastlogin datetime)

insert into @mytable values
('client1','user11','2019-06-15 2:57PM'),
('client1','user12','2019-06-12 7:47PM'),
('client2','user21','2019-06-13 8:30PM'),
('client2','user22','2019-06-17 9:00AM'),
('client3','user31','2019-06-10 10:57PM'),
('client3','user32','2019-06-10 11:57PM')

;with cte as(
select client,myuser,lastlogin,row_number() over(partition by client order by lastlogin desc) r# from @mytable )
select * from cte where r#=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...