sql-server-2005 - 在表中查找不同记录的最新月份和年份

标签 sql-server-2005 t-sql

我有下表

Name   Subject      Month  Year
-----  -----------  -----  ----
Raju   History      1      2011
Ravi   Chemistry    10     2010
Raju   Computers    12     2011
Raju   Physics      10     2010
Raju   English      6      2011 
Ravi   Mathematics  10     2010
Sunil  English      5      2011
Raju   History      5      2011 
Raju   History      6      2011

我想要的结果如下

Name   Subject      Latest_Month_Attended  Latest_Year_Attended
-----  -----------  ---------------------  --------------------
Raju   History      6                      2011 
Raju   Computers    12                     2011 
Raju   Physics      10                     2010
Raju   English      6                      2011 
Ravi   Chemistry    10                     2010
Ravi   Mathematics  10                     2010 
Sunil  English      5                      2011 

我想查找特定学生和学科的最新月份和年份

请帮我得到上面的结果

最佳答案

试试这个(已编辑):

select t1.Name, t1.Subject, max(month) as Latest_Month_Attended, t2.year as Latest_Year_Attended
from tab t1
join (
    select Name, Subject, max(year) as year
    from tab
    group by Name, Subject
) t2 on t1.name = t2.name and t1.subject = t2.subject and t1.year = t2.year
group by t1.Name, t1.Subject, t2.year

关于sql-server-2005 - 在表中查找不同记录的最新月份和年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8414215/

相关文章:

sql-server - 如何将动态SQL的结果存储在变量中?

sql - 内连接 SQL 数据透视表

sql-server - CAST 和 IsNumeric

sql - 在 SQL Server 中连接 2 个数字

SQL Server : OPENXML vs SELECT. .FROM 在处理 XML 时?

sql-server-2005 - 为什么我的 SQL Server 2005 备份没有被删除?

sql - 如何检索具有另一个公共(public)字段的行(字段中具有最大值)?

c# - SqlCommand.ExecuteReader/SqlDataReader.Read 是否吞咽异常?

sql-server - 使用连接中的数据更新相关表中的列

sql-server-2008 - 以数据作为 UDF 参数的 SQL Server 2008 表