我需要找到分组是相同的5分钟组在最新的时间戳和displayid和对象ID内发生的行的方式.....分组排在SQL Server
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是按其自身分组的,因为数据集中displayid和objectid在该组最后时间戳(行3)的5分钟内匹配的数据集中没有行。
第4,5和6行是分组的,因为displayid的匹配,objectid的匹配和行时间戳在最后一行的5分钟内,第5行的时间戳在第4行的5分钟内,第6行的时间戳在5分钟5分钟。
行7和8被分组,因为OBJECTID的和displayid的是相同的,行8的时间戳是5分钟之内的基团最新时间戳(行7)。
列9本身,因为有数据集中没有行分组,其中5分钟的那个组的最新时间戳内displayid而objectid比赛
*我使用SQL Server 2008 R2的
仅供参考,您正在使用SQL Server 2008 R2,而不是“MS SQL” – 2012-04-16 00:12:08
如果试图组记录不多相隔五分钟(即组由g决定) APS在它的低端和高端,差距超过五分钟),请看看[如何选择记录在SQL Server中相隔一小时](http://stackoverflow.com/questions/10037126/how以诚取记录一小时的开 - 从一-另一个功能于SQL服务器/ 10037501#10037501) – 2012-04-16 01:06:33
这是很容易理解,如果你告诉我们,你所期望的输出。 – Arion 2012-04-16 07:01:00