在学区工作我有一个数据库,其中包含有关学生的信息。教育计划。我使用Management Studio访问SQL Server 2012数据库。我需要从最近的第二个计划中获取信息。这是专栏。
PlansAnoka
dbo.plans
列:
PlanID
(主键)StudentID
(这些对于每个学生都是独一无二的)PlanDate
(这是我想用作第二张最新记录日期的专栏。Meeting Date
(这只是我需要的另一个数据点)我知道如何创建查询以获取最新的查询,但不知道最近的第二个查询。我需要第二个最近的记录为每个学生。任何帮助将不胜感激!
答案 0 :(得分:2)
使用ROW_NUMBER
功能和分区StudentID
:
WITH A AS
(
SELECT
StudentID ,
PlanDate ,
MeetingDate,
ROW_NUMBER() OVER(PARTITION BY StudentID ORDER BY PlanDate DESC) rownum
FROM dbo.plans
)
SELECT * FROM a
WHERE rownum=2
答案 1 :(得分:1)
如果您想获得row_number
记录,请使用n'th
select * from
(select studentid ,
plandata ,
row_number() over(partition by plandata order by plandata desc) rn
from dbo.plans) t
where t.rn=2 -- or n
答案 2 :(得分:0)
请试试这个:
select * from
(select *, row_number() over (partition by StudentID order by PlanDate desc) Rank
from dbo.plans) p
where p.Rank = 2
答案 3 :(得分:0)
试试这个;
select * from
(
select *, ROW_NUMBER()
over(partition by StudentID order by plandate desc)
as Row from dbo.plans
) temp
WHERE temp.Row = 2