在某些条件下从数据库获取最后一条记录

时间:2013-05-21 10:02:48

标签: sql sql-server

我的表结构

recordId         mobileNumber         month            year          yearmonth
101               9900000000          4                2013           20134
102               9900000000          3                2013           20133
103               9900000000          1                2013           20131
104               9999999999          3                2013           20133
105               9999999999          2                2013           20132
106               9999999999          1                2013           20131

假设当前月份是4,年份是2013年。

我需要从最后一个条目中获取此表中的所有数字。我曾尝试过这个查询

select * from tablename where yearmonth=(select max(yearmonth) from tablename)

但问题是有些数字上个月没有出现,如999999999号 没有第4个月的值,因此它不会检索所有数字。

如何获取所有数字的最后一条记录。

2 个答案:

答案 0 :(得分:3)

SELECT  *
FROM    (
        SELECT  *,
                ROW_NUMBER() OVER (PARTITION BY mobileNumber ORDER BY year DESC, month DESC, recordId DESC) rn
        FROM    mytable
        ) q
WHERE   rn = 1

答案 1 :(得分:0)

select mobileNumber, max(yearmonth)
from tablename
group by mobileNumber