0

我正在尝试找出一种方法来执行查询,该查询将获取所有超过六个月的数据,而没有任何更新的数据。我会看看我是否可以适当地总结一下:

select u.USER_FirstName, u.USER_LastName, 
    u.USER_LastSession, c.Login_Name

FROM USER u
   JOIN Customer c
      ON u.USER_Customer_Identity=c.Customer_Identity

Where u.USER_LastSession < getdate()-180

Order by USER_LastSession

到目前为止,这是我在 SO 上找到的内容,但问题在于 USER.USER_LastSession 记录了每次登录的值(因此不需要返回一些 Customer.Login_Name 值)。我想要那些大于六个月的,如果它们也是在小于六个月的时间记录的,则不返回结果。示例数据:

USER_LastSession 登录名

2012-08-29 21:33:30.000 测试/测试

2012-12-25 13:12:23.346 示例/示例

2013-10-30 17:13:45.000 测试/测试

我不想返回 TEST/TEST,因为有过去六个月的数据。但是,我想返回EXAMPLE/EXAMPLE,因为它只有六个月以上的数据。我想我可能忽略了一些事情 - 如果已经有答案,请原谅我(我只能找到“超过六个月”的回复)。非常感谢任何和所有帮助!

4

2 回答 2

0
with cte as (
    select Login_Name, max(USER_LastSession) LastSession
    FROM USER u
    JOIN Customer c
        ON u.USER_Customer_Identity = c.Customer_Identity
    group by Login_Name
)

select *
from cte
where LastSession < getdate()-180
于 2013-11-11T22:44:55.067 回答
0
SELECT ...
FROM User u
JOIN Customer c ON u.USER_Customer_Identity=c.Customer_Identity
WHERE u.USER_Customer_Identity NOT IN
    (SELECT USER_Customer_Identity
     FROM User
     WHERE USER_LastSession >= getdate() - 180)
ORDER BY USER_LastSession
于 2013-11-11T22:42:36.040 回答