gpt4 book ai didi

c# - 如何获取每个用户的第一行和最后一行数据

转载 作者:行者123 更新时间:2023-11-30 21:35:37 24 4
gpt4 key购买 nike

我正在尝试编写一个查询来仅为每个用户选择第一条和最后一条记录。

Employee Data

基本上我想:

SELECT * FROM EmpData WHERE ClockNo is DISTINCT AND only the first and last record
is displayed like in the picture. N.B it's color-coded per user

数据库:

CREATE TABLE [dbo].[EmpData](
[ClockNo] [nvarchar](50) NULL,
[FirstName] [nvarchar](50) NULL,
[LastName] [nvarchar](50) NULL,
[Department] [nvarchar](50) NULL,
[ClockPoint] [nvarchar](50) NULL,
[Date] [nvarchar](50) NULL,
[Time] [nvarchar](50) NULL
) ON [PRIMARY]

最佳答案

有多种方法可以做到这一点。但是将日期/时间值放在两列中会使这成为一个难题。因此,大多数方法都涉及日期操作——这可能非常依赖于数据库。

这是一个不需要日期/时间操作的方法。而且,它应该在大多数具有适当索引的数据库上表现良好:

select t.*
from t
where not exists (select 1
from t t2
where t2.clockno = t.clockno and
(t2.date > t.date or
t2.date = t.date and t2.time > t.time
)
) or
not exists (select 1
from t t2
where t2.clockno = t.clockno and
(t2.date < t.date or
t2.date = t.date and t2.time < t.time
)
) ;

如果您想要每天的数据,那么我会选择:

select t.*
from t join
(select clockno, date, min(time) as mint, max(time) as maxt
from t
group by clockno, date
) tt
on tt.clockno = t.clockno and tt.date = t.date and
t.time in (tt.mint, tt.maxt);

关于c# - 如何获取每个用户的第一行和最后一行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49068377/

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