我正在使用SQL Server CE数据库。我有学生费用表,如:
表会费:
Erno | Date | Due
---------------------------
1 1-Jan-2016 220
1 1-Mar-2016 200
1 1-Apr-2016 210
1 1-May-2016 200
2 1-Jan-2016 250
2 1-Feb-2016 300
2 1-Mar-2016 220
2 1-Apr-2016 200
3 1-Jan-2016 300
3 1-Feb-2016 150
3 1-May-2016 400
3 1-Jun-2016 300
其中 ErNo 是注册号。 日期是存款日期,到期是该日期之前的金额或费用余额。
我希望得到每Erno
或Student
的最新记录。
喜欢:
最新到期信息:
Erno Date Due
1 1-May-2016 200
2 1-Apr-2016 200
3 1-Jun-2016 300
是否有任何SQL Server CE查询?
答案 0 :(得分:1)
一个选项是join
表格回归自身,因为我不相信row_number
支持:
select sf.erno, sf.date, sf.due
from studentfee sf join (
select erno, max(date) maxdate
from studentfee
group by erno) t on sf.erno = t.erno and sf.date = t.maxdate
答案 1 :(得分:0)
你可以试试这个:
select sf.*
from studentfee sf
where sf.date = (select max(sf2.date) from studentfee sf2 where sf2.errno = sf.errno);
然后,为了提高性能,您需要studentfee(errno, date)
上的索引。
答案 2 :(得分:0)
尝试
select fee.erno,fee.date,fee.due from dues fee
join
(select erno, max([date]) maxdate
from dues group by erno) mx
on fee.erno = mx.erno and fee.date = mx.maxdate
order by fee.erno