私たちはユーザーのアクティビティのテーブルを持っています。各アクティビティーは、userID、timestamp、およびactivityIDによってログに記録されます。毎日ユーザごとにactivityIDごとに複数の行が存在する可能性があります。T-SQL IDによる最後の日々のタイムスタンプを取得
私たちは、この例のように、具体的な活動は、最後のX日のために、ユーザによって実行された最後の時間を取得されてやろうとしている。
userID timestamp activityID
3241 10/14/2017 7:17 2
3241 10/15/2017 8:17 2
3241 10/16/2017 8:17 2
4355 10/15/2017 8:17 2
4355 10/16/2017 8:17 2
4355 10/17/2017 8:17 2
1234 10/15/2017 8:17 2
2236 10/15/2017 8:17 2
2236 10/16/2017 8:17 2
2002 10/17/2017 8:17 2
私は非常に最後の時間を引くことができます活動は、最後のX日以内に日ごとにユーザIDによって行われますが、いませんでした。
select t1.[userID],
t2.[mxdate]
from TableA t1
inner join
(
select max([timestamp]) AS mxdate,
[userID]
from TableA
where activityType = 2
group by [userID]
) t2
on t1.[userID] = t2.[userID]
and t1.[timestamp] = t2.mxdate
私は、タイムスタンプの日付部分のGROUP BYにさまざまな方法を試してきたが、これまでのところ成功していません。私は毎回の活動とタイムスタンプを取得し続けています。
私は少なくとも正しい方向に向かっていますか?もしそうなら、私はどの駒/句が欠けていますか?
ご協力いただきありがとうございます!
問題のサンプルデータに基づいて、あなたの望ましい結果は何ですか? –
申し訳ありませんが、私は泥としてはっきりしているかもしれません!私が投稿したものは*望ましい結果です。 – luser3228561