簡體   English   中英

如何對行進行分組並選擇前1個

[英]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是注冊編號。 日期”是存款日期,“ 到期”是到該日期為止的金額或費用余額。

我想獲取每個ErnoStudent的最新記錄。

喜歡 :

最新到期信息:

   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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM