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

时间:2016-09-07 21:42:34

标签: sql sql-server sql-server-2008

我有一些记录跟踪DATETIME的查询。系统中存在故障,有时记录会在同一天多次输入。我有一个查询,附带了一堆相关的子查询,但数字是关闭的,因为当系统中出现这些故障时,这些引线会出现多次。我需要当天的第一个参赛作品,我试着用MIN搞砸,但是我无法让它发挥作用。

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

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

2 个答案:

答案 0 :(得分:2)

以下是使用row_number()的一种方法:

select *
from (
    select *, 
        row_number() over (partition by userid, cast(added as date) order by added) rn
    from sourcelog
) t
where rn = 1

答案 1 :(得分:1)

您可以使用group by和min来完成此操作。

如果您为每个创建的记录分配唯一的序列号,则可以返回每天创建的最小数字,具体取决于数据的结构方式。否则,您需要返回每天最早的DATETIME值的记录ID。

--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]