-1

我正在尝试从访问控制数据库中提取一些特定信息。
我有一个查询提供了几天的结果。对于特定的一天,我需要获取每个人在那一天的第一条记录。我完全混淆了整个过程,因此我的问题

这是用于提取初始查询的代码

Select
    Message.TimeStamp_SPM,
    Message.FirstName,
    Message.LastName,
    Message.CardNumber,
    Message.MessageDescription,
    Message.Description,
    Department.Description As Description1
From
    Message Inner Join
    CardHolder On CardHolder.CardHolderID = Message.CardHolderID Inner Join
    Department On CardHolder.DepartmentID = Department.DepartmentID
Where
    Message.TimeStamp_SPM > Convert(datetime,'2021-03-02',120) And
    Message.TimeStamp_SPM < Convert(datetime,'2021-03-03',120) And
    Message.Description Not Like '%Truck%'

从这个查询中,我需要显示获取每个人在该特定日期的第一条记录。关于获得所需结果的最有效方法的任何建议?

4

1 回答 1

0

从这个查询中,我需要显示获取每个人在该特定日期的第一条记录。

假设“人”是CardHolderId,然后将其包含在您的查询中。然后,您可以使用窗口函数来获取每个的最新记录CardHolderId

with cte as (
      <your query here with CardHolderId>
     )
select cte.*
from (select cte.*,
             row_number() over (partition by CardHolderID order by TimeStamp_SPM desc) as seqnum
      from cte
     ) cte
where seqnum = 1;
于 2021-03-03T12:29:39.803 回答