首页 > 解决方案 > 特定年份的最大值与连接

问题描述

我有两张桌子。Key两者SID都有 - 第一个表joinkey 有教育数据。例如SID,获得的年资格 ( YearQual) 和 QualLevelrows每个可能有几个SID

第二张桌子event data包括。事件年份 ( EventYear),以及SID

我需要找到的是MAX QualLevelEventYear。

我正在使用 SQL Server。

query之后写过,当我只想在那一年时query,我可以得到显示所有>=的MAX QualLevel曾经(与 无关event year)或多行。qualification levelsevent yearMAX

SELECT eventdata.S_ID, eventdata.eventyear,
     max (education.qual_Level) as highqual
FROM education
  left join eventdata
  ON education.S_ID = eventdata.S_ID
  WHERE  education.YearQual<= eventyear 
  GROUP BY eventyear, qual_level, eventdata.S_ID

上面的代码给出了多行

标签: sqlsql-server

解决方案


我需要找到 EventYear 的 MAX QualLevel。

如果你想要MAX QualLeveland EventYear,不要包含eventdata.S_ID在你的selectandgroup by语句中。

因为你有多个S_ID相同的eventyear,所以你会得到重复的记录。

更改您的查询,如下所示。

SELECT  eventdata.eventyear,
        max (education.qual_Level) as highqual
FROM education
  left join eventdata
  ON education.S_ID = eventdata.S_ID
  WHERE  education.YearQual<= eventdata.eventyear 
  GROUP BY eventdata.eventyear

推荐阅读