sql查询,根据给定的时间范围选择组内的第一个匹配项
可能重复:sql查询,根据给定的时间范围选择组内的第一个匹配项,sql,tsql,Sql,Tsql,可能重复: 使用MSSQL获得此结果: 从以下查询: SELECT [DATESTAMP],[ZONE],[ALARM] FROM [UNIT].[dbo].[LOG] WHERE [DATESTAMP] BETWEEN @StartDate AND @EndDate AND [ALARM] ='ERROR' AND [ZONE] IN ('BOX 11','BOX 12') ORDER BY DATESTAMP DESC 如何更改查询以仅获取第2、5、9、13、
使用MSSQL获得此结果: 从以下查询:
SELECT [DATESTAMP],[ZONE],[ALARM]
FROM [UNIT].[dbo].[LOG]
WHERE [DATESTAMP] BETWEEN @StartDate AND @EndDate
AND [ALARM] ='ERROR'
AND [ZONE] IN ('BOX 11','BOX 12')
ORDER BY DATESTAMP DESC
如何更改查询以仅获取第2、5、9、13、17、19、20行
也就是说,我只需要一个组中大约1分钟的第一行(最早的一行),
然而,错误爆发的频率不会超过15分钟
当做
Freewheelin如果我理解你的意思,你想知道每一分钟最早进入的时间,对吗?如果是,请尝试以下方法:
SELECT
DateStamp,
ZONE,
Alarm
FROM
[UNIT].[dbo].[LOG]
JOIN
( SELECT
DateMinute = DATEADD(second, -DATEPART(second, DateStamp), DateStamp),
Earliest = MIN(DateStamp)
FROM
[UNIT].[dbo].[LOG]
GROUP BY
DATEADD(second, -DATEPART(second, DateStamp), DateStamp)
) X ON [UNIT].[dbo].[LOG].DateStamp = X.Earliest
结果是:
SELECT MIN([DATESTAMP]) as FirstOccurance FROM ....
WHERE ....
....
GROUP BY DATEPART(minute, [DATESTAMP])
ORDER BY FirstOccurance DESC
-再次感谢各位按时间分组您的结果。有按日期分组和使用min(date)Paul,好的,我在“组”中得到错误,其中组可以是1到4行,我对第一个错误发生感兴趣,因为大约一分钟内可能出现的错误是“以下错误”,并且由于概述原因无法再次识别。谢谢大家,这里反应真快!对,我认为我提供的代码就是这样做的——它在一分钟内显示了最早的错误。如果这不起作用,你能解释一下哪里缺少它吗?如果有效,请单击答案左侧的复选框,将其标记为可接受。Paul,好的,您的查询显示“YourTable”,意思是在筛选之前,将我的查询结果作为表,或按内容的视图剥离顺序,或表[LOG]。对不起,当我键入代码时,我忘了更改我的表名“YourTable”到您使用的“LOG”表的名称。我在回答中已经纠正了这一点。