2016-10-28 49 views
0

我下表具有MAX值:TSQL-获取取决于另一列

yr location entry_date student grade 
----|--------|----------|-------|----- 
2014| A |2013-12-12| Tom | 8th 
2015| B |2014-11-11| Tom | 9th 
2016| B |2015-09-07| Tom | 10th 
2016| B |2016-10-20| Tom | 11th 

我需要基于ENTRY_DATE的年和位置的MAX等级。

预期结果:

yr location entry_date student grade 
-----|--------|----------|-------|----- 
2014 | A |2013-12-11| Tom | 8th 
2015 | B |2014-11-11| Tom | 9th 
2016 | B |2016-10-20| Tom | 11th 

我曾尝试以下select语句:

SELECT distinct max_yr.yr, 
       location, 
       max_date.entry_date, 
       u.student, 
       grade 
      from user_table u 
inner join (SELECT student, 
       max(entry_date) as entry_date 
       from user_table 
       group by student) max_date on 
       u.student = max_date.student 
       and u.entry_date = max_date.entry_date 
inner join (SELECT student, 
       max(yr) as yr 
       from user_table 
       group by student) max_yr 
       on u.student=max_yr.student 
       and u.yr = max_yr.yr 

此语句只返回1个记录:

yr location entry_date student grade 
    -----|---------|-----------|--------|------ 
    2016 | B |2016-10-20 | Tom | 11th 

任何帮助将不胜感激。

+0

为两行同档次真正的坏榜样 – Paparazzi

回答

0
Select Yr 
     ,location 
     ,entry_date = max(entry_date) 
     ,Student 
     ,Grade  = max(Grade) 
From YourTable A 
Group By Yr,Location,Student 

返回

enter image description here

+0

真棒!非常感谢。 – user1308665

0
select * from 
(select *, row_number() over (partition by yr order by date desc) as rn 
    from table 
) tt 
where rn = 1