0

新しいデータなしで、6 か月以上前のすべてのデータを取得するクエリを実行する方法を見つけようとしています。適切に要約できるかどうかを確認します。

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 値を返す必要はありません)。6 か月を超えるものだけが必要で、 6 か月未満の時間にも記録されている場合は結果が返されません。サンプルデータ:

USER_LastSession ログイン名

2012-08-29 21:33:30.000 テスト/テスト

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

2013-10-30 17:13:45.000 テスト/テスト

過去 6 か月のデータがあるため、TEST/TEST を返したくありません。ただし、EXAMPLE/EXAMPLE には 6 か月以上前のデータしか含まれていないため、返品したいと思います。おそらく私が見落としているものがあると思います-これに対する回答がすでにある場合はご容赦ください(「6か月以上」の回答しか見つかりませんでした)。どんな助けでも大歓迎です!

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 に答える