gpt4 book ai didi

sql - 如何返回最早日期的记录?

转载 作者:行者123 更新时间:2023-12-04 20:39:28 29 4
gpt4 key购买 nike

我需要为每个不同的学生 ID 返回第一条记录。在我的示例代码中,我有一个记录在同一日期有两个事件,另一个学生在不同日期有多个事件。

我需要选择最早的日期,如果在同一日期发生了多个事件,则将最早的事件 ID 作为下一个条件。有什么好方法可以做到这一点?

我在这个数据集中有大约 35 列,但为了简洁起见,只包含了下面的前 5 列。

数据:

Picture of data

预期结果:

Picture of desired results

示例代码如下。

  CREATE TABLE #TEMP (
StudentID float,
SchoolID float,
StudentNameFull nvarchar(255),
IncidentID float,
IncidentDate date
)

INSERT INTO #TEMP (StudentID, SchoolID, StudentNameFull, IncidentID, IncidentDate)
VALUES
(1111111, 406, 'Smith,John', 123321, '20170501'),
(1111111, 406, 'Smith,John', 123322, '20170501'),
(2222222, 406, 'Jones,Tim', 654789, '20170501'),
(2222222, 406, 'Jones,Tim', 659872, '20170503'),
(2222222, 406, 'Jones,Tim', 478978, '20170508')

SELECT * FROM #TEMP

谢谢你。

最佳答案

在 SQL Server 中,您可以使用 ROW_NUMBER() 执行此操作。 :

select t.*
from (select t.*,
row_number() over (partition by StudentId order by IncidentDate, IncidentID) as seqnum
from #TEMP t
) t
where seqnum = 1;

这将“最简单的事件”解释为“具有最小值的事件 ID”。

关于sql - 如何返回最早日期的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44499063/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com