[英]How to group rows and select top 1
我正在使用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查詢可以這樣做?
一種選擇是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
您可以嘗試以下方法:
select sf.*
from studentfee sf
where sf.date = (select max(sf2.date) from studentfee sf2 where sf2.errno = sf.errno);
然后為了提高性能,您需要對studentfee(errno, date)
進行索引。
嘗試
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.