我试图编写一个查询,从表格中为每个人选择最后4个日期。我知道我可以使用max(日期)来选择最近的日期,但是如何从每个人的最新日期开始选择最后4个日期。
我尝试的是(如下所示),但这只给了我最近的事件日期。
select user, max(date)
from users
group by user
我希望看到的结果是:
用户|日期
约翰| 30/03/2017
约翰| 27/03/2017
约翰| 21/02/2017
约翰| 2017年4月1日
安迪| 29/03/2017
安迪| 27/02/2017
安迪| 21/02/2017
安迪| 2017/01/01
答案 0 :(得分:1)
您可以使用ROW_NUMBER函数:
OuterLayout
但是,如果用户可以有重复日期,那么最好使用DENSE_RANK并在SELECT之后添加DISTINCT:
<?xml version="1.0" encoding="utf-8"?>
<com.example.OuterLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<?xml version="1.0" encoding="utf-8"?>
<com.example.InnerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.example.ChildView
android:id="@+id/childView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</com.example.OuterLayout>
答案 1 :(得分:-1)
在黑暗中拍摄:
select t.person, o.date
from table t
outer apply (
select top 4 t2.date
from table2 t2
where t.personID = t2.personID
Order by t2.date desc
) o