我有一个用户表,该表包含具有多个用户的多个客户端,每个用户的最后登录日期。我需要获取每个客户端的最新登录用户的日期。我已经尝试过max(date),但是这使我获得了每个客户端的每个用户的最后登录日期。
我的目标是让每个客户拥有一个最新登录日期的用户。
clc
clear
close all
revenue = ones(100,1);
opex = -1*ones(100,1);
opex(10:15,1) = 3;
revenueNeg = revenue;
revenueNeg(revenueNeg>0) = 0;
revenuePos = revenue;
revenuePos(revenuePos<0) = 0;
opexNeg = opex;
opexNeg(opexNeg>0) = 0;
opexPos = opex;
opexPos(opexPos<0) = 0;
yDataNeg = [revenueNeg, opexNeg];
yDataPos = [revenuePos, opexPos];
hold on;
bar(yDataNeg,'stack')
bar(yDataPos,'stack')
legend('Revenue','Opex');
hold off;
我正在寻找用户的登录日期最近的地方
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
答案 0 :(得分:0)
以下示例脚本使用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