我需要找到一种方法对组中最新时间戳 5 分钟内发生的行进行分组,并且 displayid 和 object id 相同.....
CREATE TABLE [dbo].[ExampleLog](
[ID] [uniqueidentifier] NOT NULL,
[EVENTNUMBER] [int] NULL,
[DISPLAYSERIAL] [int] NULL,
[DISPLAYID] [varchar](50) NULL,
[OBJECTSERIAL] [int] NULL,
[OBJECTRSSILEVEL] [int] NULL,
[OBJECTID] [varchar](50) NULL,
[TIMESTAMP] [datetime] NULL)
INSERT INTO [dbo].[ExampleLog]
VALUES
(NewID(), 206, 6897913, 'HV 644', 6885819, 66, 'WAP 8', '2012-01-01 12:12:00'),
(NewID(), 206, 6897913, 'HV 644', 6885819, 66, 'WAP 8', '2012-01-01 12:13:00'),
(NewID(), 206, 6897913, 'HV 644', 6877807, 54, 'MV 20', '2012-01-01 12:16:00'),
(NewID(), 103, 6897913, 'HV 644', 6898052, 118, 'HV 62', '2012-01-01 12:20:00'),
(NewID(), 206, 6897913, 'HV 644', 6886130, 122, 'HV 62', '2012-01-01 12:21:00'),
(NewID(), 206, 6897913, 'HV 644', 6886130, 106, 'HV 62', '2012-01-01 12:25:00'),
(NewID(), 204, 6897913, 'HV 644', 6886130, 106, 'HV 62', '2012-01-01 12:31:00'),
(NewID(), 204, 6897913, 'HV 644', 6886130, 106, 'HV 62', '2012-01-01 12:33:00'),
(NewID(), 104, 6897913, 'HV 644', 6886130, 106, 'HV 62', '2012-01-01 12:39:00')
所以使用上面的数据集,我的结果理想地分组如下;
第 1 行和第 2 行被分组,因为 objectid 和 displayid 相同,并且第 2 行出现在第 1 行的 5 分钟内,数据集中没有其他行包含相同的 displayid 和 objectid 以及组最新 5 分钟内的时间戳时间戳(第 2 行)所以..
第 3 行自行分组,因为在该组最新时间戳(第 3 行)的 5 分钟内,数据集中没有 displayid 和 objectid 匹配的行。
第 4、5 和 6 行被分组,因为 displayid 的匹配、objectid 的匹配和行时间戳在最后一行的 5 分钟内,第 5 行的时间戳在第 4 行的 5 分钟内,第 6 行的时间戳在行的 5 分钟内5个。
第 7 行和第 8 行被分组,因为 objectid 和 displayid 相同,并且第 8 行的时间戳在该组最新时间戳(第 7 行)的 5 分钟内。
第 9 行自行分组,因为在该组最新时间戳的 5 分钟内,数据集中没有显示 ID 和 objectid 匹配的行
*我使用的是 SQL Server 2008 R2