мне нужно найти способ группировки строк, которые происходят в течение 5 минут после последней временной метки в группе и DisplayID и идентификатор объекта, такие же .....Группировка строк в 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 встречается в течение 5 минут от строки 1, в наборе данных нет других строк, содержащих одни и те же displayid и objectid, и временную метку в течение 5 минут из последней временной отметки группы (строка 2), поэтому ..
Строка 3 сгруппирована сама по себе, поскольку в наборе данных нет строк, где displayid и objectid соответствуют в течение 5 минут этой группы последней временной метки (строка 3).
Строки 4, 5 и 6 сгруппированы, потому что совпадение displayid, совпадение объекта и временные метки строк находятся в пределах 5 минут от последней строки, временная метка строки 5 находится в пределах 5 минут от строки 4, а временная метка строки 6 5 минут 5-го ряда.
Строки 7 и 8 сгруппированы, потому что объектные и дисплейные объекты одинаковы, а временная метка строки 8 находится в пределах 5 минут после того, как эта группа будет последней временной отметкой (строка 7).
Строка 9 группируется по себе, потому что нет строк в наборе данных, где DisplayID и ObjectID матч в 5-й минуте, что группы последней временной метки
* Я использую SQL Server 2008 R2
FYI, вы используете SQL Server 2008 R2, а не «MS SQL» –
Если попытаться сгруппировать записи не более чем на пять минут (т. е. группа определяется g aps на его нижнем и верхнем концах, пробелы длиннее пяти минут), пожалуйста, взгляните на [как выбрать записи за один час друг от друга на сервере sql] (http://stackoverflow.com/questions/10037126/how -to-pick-records-a-hour-apart-from-one-another-in-sql-server/10037501 # 10037501) –
Это намного проще понять, если вы покажете нам, какой результат вы ожидаете. – Arion