首页 > 解决方案 > SQL查询:我需要选择所有匹配字符串的条目和日志中每个日期时间的最后一行条目

问题描述

我需要在日志中找到所有登录/注销/会话过期条目以及同一日志中每个日期的最后一个条目。

我的数据片段如下所示:

"DateTime"  "Action"  
"12/27/2018 12:04 PM" "Logged Out. Logged in for 240 minutes" 
"12/27/2018 12:10 PM" "Login Successful" 
"12/27/2018 12:10 PM" "Patient Search" 
"12/27/2018 12:41 PM" "Logged Out. Logged in for 89.8 minutes" 
"12/27/2018 3:06 PM" "Login Successful" 
"12/27/2018 3:30 PM" "Viewed All" 

我可以使用下面的代码找到“登录/注销/会话过期”条目;但我也在努力为每个日期选择最后一行。IE。输出应该是:

"DateTime"  "Action"  
"12/27/2018 12:04 PM" "Logged Out. Logged in for 240 minutes" 
"12/27/2018 12:10 PM" "Login Successful" 
"12/27/2018 12:41 PM" "Logged Out. Logged in for 89.8 minutes" 
"12/27/2018 3:06 PM" "Login Successful" 
"12/27/2018 3:30 PM" "Viewed All" 


SELECT *
            FROM LOGS WITH (NOLOCK) 
              WHERE [Username] = '",username,"' 
              AND (Action LIKE 'Login S%' OR Action LIKE 'Logged%' OR 
              Action LIKE '%session%') 
              AND [DateTime] BETWEEN '",From_date,"' AND '",To_date,"'

标签: sqlsql-servertsql

解决方案


您的查询意味着您的数据中有第三个字段(用户名)。如果您正在寻找用户名的“最旧”条目,我会探索使用带有“GROUP BY”用户名的子查询和日期时间的聚合函数 MAX,然后您可以将子查询值加入您的初始查询。


推荐阅读