SQL Server查询,要求返回客户最近登录系统的日期



我有一个面试问题是这样的:

User有列:

user_id ,
name ,
phone_num

UserHistory有列:

user_id ,
date ,
action

编写一个SQL查询,返回在过去30天内登录过的任何用户的姓名,电话号码和最近的日期(如果UserHistory中的action字段设置为"logged_on",则可以告诉用户已经登录)。

我是一个SQL新手,我写了一个查询如下:

SELECT * 
INTO #temp
FROM (SELECT user_id 
      FROM User 
      JOIN User_History ON user.user_id = User_History.user_id)
WHERE 
    MAX(DATEDIFF(day, date, getdate()) BETWEEN 1 AND 30
SELECT  
    u.Name, u.phone_number 
FROM 
    #temp t 
JOIN 
    User u ON u.user_id =  t.user_ID

我没有提供表格的数据,有人能看一下并给出一些见解吗?

更简单的版本应该是:

SELECT u.name, u.phone_num, MAX(date) as MostRecentLogon
FROM user u
JOIN UserHistory uh on u.user_id = uh.user_id
WHERE uh.action = "logged_on"
AND uh.date >= DATEADD(d, -30, GETDATE())
GROUP BY u.name, u.phone_num

最新更新