我的表结构
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个月的值,因此它不会检索所有数字。
如何获取所有数字的最后一条记录。
答案 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