グループ内の最新のタイムスタンプから5分以内に発生する行をグループ化する方法を見つける必要があり、displayidとobjectidは同じです.....
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)から5分以内にdisplayidとobjectidが一致する行がないため、行3は単独でグループ化されます。
行4、5、および6は、displayidの一致、objectidの一致、および行のタイムスタンプが最後の行から5分以内、行5のタイムスタンプが行4の5分以内、行6のタイムスタンプが行の5分以内であるためにグループ化されます。 5の。
行7と行8は、objectidとdisplayidが同じであり、行8のタイムスタンプがそのグループの最新のタイムスタンプ(行7)から5分以内であるためにグループ化されます。
データセットには、最新のタイムスタンプから5分以内にdisplayidとobjectidが一致する行がないため、行9は単独でグループ化されます。
* SQL Server2008R2を使用しています