sql语句查询数据求大神帮忙

2025-06-26 23:32:32
推荐回答(2个)
回答1:

假设表结构是:考试记录(学员姓名,考试日期(无重复),考试结果)

查出每个考生的上次考试时间、最新考试时间、最新考试结果

select c.学员姓名,d.t as 上次考试时间,c.t as 最新考试时间,
c.r as 最新考试结果 from 
(select 学员姓名,max(考试日期) as t,max(考试结果) as r from  
考试记录 group by 学员姓名) c left join 
(select a.学员姓名,max(a.考试日期) as t from  
考试记录 a left join 
(select 学员姓名,max(考试日期) as t from 考试记录 group by 学员姓名) b 
on a.学员姓名=b.学员姓名 where a.考试日期on c.学员姓名=d.学员姓名;

测试结果如图

回答2:

-- 设你的考试表名为YourTable,则SQL语句写法如下:

SELECT t.Name as '学员姓名',t.ExamDate as '上次考试日期'
      ,t2.ExamDate as '最新考试日期',t2.Result as '考试结果'
      ,(CASE WHEN t.ExamDate=t2.ExamDate THEN '首次预约科目二\科目三' ELSE ''END) as'预约情况' 
FROM(
    SELECT *FROM (
      SELECT *,RANK() OVER(PARTITION BY Name ORDER BY ExamDate ASC) as rn FROM YourTable
    )as ft WHERE rn=1
)t
LEFT OUTER JOIN 
(
   SELECT *FROM (
      SELECT *,RANK() OVER(PARTITION BY Name ORDER BY ExamDate DESC) as rn FROM YourTable
    )as ft WHERE rn=1
)t2 ON t.Name=t2.Name