我有一些记录跟踪DATETIME的查询。系统中存在故障,有时记录会在同一天多次输入。我有一个查询,附带了一堆相关的子查询,但数字是关闭的,因为当系统中出现这些故障时,这些引线会出现多次。我需要当天的第一个参赛作品,我试着用MIN搞砸,但是我无法让它发挥作用。
我目前有这个,但我不确定我是否在正确的轨道上。
SELECT SL.UserID, MIN(SL.Added) OVER (PARTITION BY SL.UserID)
FROM SourceLog AS SL
答案 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]