SQL Server:我每天有多条记录,我只想返回当天的第一条记录

SQL Server:我每天有多条记录,我只想返回当天的第一条记录,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一些按日期时间追踪查询的记录。系统出现故障,有时记录会在同一天输入多次。我有一个查询,它附带了一堆相关的子查询,但是这些数字是关闭的,因为当系统中出现这些小故障时,这些线索会出现多次。我需要一天中的第一个条目,我试着和MIN鬼混,但是我不能让它工作 我现在有这个,但我不确定我是否在正确的轨道上 SELECT SL.UserID, MIN(SL.Added) OVER (PARTITION BY SL.UserID) FROM SourceLog AS SL 这里有一种使用行号()

我有一些按日期时间追踪查询的记录。系统出现故障,有时记录会在同一天输入多次。我有一个查询,它附带了一堆相关的子查询,但是这些数字是关闭的,因为当系统中出现这些小故障时,这些线索会出现多次。我需要一天中的第一个条目,我试着和MIN鬼混,但是我不能让它工作

我现在有这个,但我不确定我是否在正确的轨道上

SELECT SL.UserID, MIN(SL.Added) OVER (PARTITION BY SL.UserID)  
  FROM SourceLog AS SL 

这里有一种使用
行号()的方法


您可以使用GROUPBY和min来完成此任务

根据数据的结构,如果要为创建的每个记录指定唯一的序列号,则只需返回每天创建的最低编号即可。否则,您将需要返回记录的ID以及每天最早的DATETIME值

--Assumes sequential IDs
select
    min(Id)
from
    [YourTable]
group by
    --the conversion is used to stip the time value out of the date/time
    convert(date, [YourDateTime]

可能重复我为SQL Server编辑了这篇文章,这将返回有史以来的第一个条目,我需要当天的第一个条目。谢谢。我做了一个CTE,然后加入了他们。另一个解决方案也很有效,但你的解决方案更快,我认为如果其他人看到它,他们会更容易理解。非常感谢你,我会在将来写更好的问题。谢谢。事实上,这确实起到了作用,我将来会努力写更好的问题。
--Assumes sequential IDs
select
    min(Id)
from
    [YourTable]
group by
    --the conversion is used to stip the time value out of the date/time
    convert(date, [YourDateTime]