在sql中获取每年的最后一组日期?

时间:2016-03-29 03:46:21

标签: sql-server sql-server-2014

我有一个表格,其格式如下:

ranking_date  ranking  player_id  ranking_points
------------  -------  --------- ---------------
1980-12-22    3        100284     0
1980-12-22    21       100676     0
1980-12-22    44       100653     0
1980-12-22    136      100713     0
1980-12-22    182      100757     0
1980-12-22    211      100800     0
1980-12-22    255      101061     0
1980-12-22    283      101062     0
1980-12-22    372      100837     0
1980-12-22    390      100682     0
1980-12-22    423      100923     0
1980-12-22    440      100936     0
1983-01-03    2        100284     0
1983-01-03    7        101062     0
1983-01-03    9        100676     0

所以我想获得每年的最后rank_date。我有从1973年到2016年的排名,但不是所有的最后排名都在12月。此当前表也只有超过100万行,所以我这样做是为了获得年终排名。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您正在尝试列出每年最后一次的排名记录。我打电话给你的桌子tablename

SELECT * 
FROM tablename 
WHERE ranking_date IN (SELECT MAX(ranking_date) 
                       FROM tablename 
                       GROUP BY YEAR(ranking_date))

子查询

SELECT Max(ranking_date) FROM tablename GROUP BY YEAR(ranking_date)将确定每年的最后一次(最长或MAX)日历日期。这些年份通过YEAR(ranking_date)分组确定。将该子查询应用于主查询中的WHERE子句应该提取每年最后一次的记录。