Sql server 在SQL Server 2008中,是否可以基于有序的日期时间戳向连续数据块添加列组?

Sql server 在SQL Server 2008中,是否可以基于有序的日期时间戳向连续数据块添加列组?,sql-server,group-by,ranking,Sql Server,Group By,Ranking,我的日志服务器从客户端RFID阅读器收集数据。TagScanTimeStamp是UTC中的行创建日期时间 以下是现场样本数据: IncomingIP ReaderID TagID TagScanTimeStamp 183.82.1.192 02 000007 2014-11-07 02:55:24.000 183.82.1.192 02 000007 2014-11-07 02:55:25.000 183.82.1.192 02

我的日志服务器从客户端RFID阅读器收集数据。TagScanTimeStamp是UTC中的行创建日期时间

以下是现场样本数据:

IncomingIP     ReaderID  TagID  TagScanTimeStamp

183.82.1.192        02  000007  2014-11-07 02:55:24.000
183.82.1.192        02  000007  2014-11-07 02:55:25.000
183.82.1.192        02  000007  2014-11-07 02:55:26.000
49.206.4.53         01  000003  2014-11-07 02:58:17.000
49.206.4.53         01  000003  2014-11-07 02:58:41.000
49.206.4.53         01  000003  2014-11-07 03:00:00.000
49.206.4.53         01  000003  2014-11-07 03:01:37.000
49.206.4.53         04  000003  2014-11-07 03:02:23.000
49.206.4.53         04  000003  2014-11-07 03:05:18.000
49.206.4.53         04  000003  2014-11-07 03:06:11.000
49.206.4.53         01  000002  2014-11-07 03:07:17.000
49.206.4.53         01  000002  2014-11-07 03:08:53.000
49.206.4.53         01  000002  2014-11-07 03:10:46.000
49.206.4.53         01  000002  2014-11-07 03:12:12.000
49.206.4.53         01  000003  2014-11-07 03:14:14.000
49.206.4.53         01  000003  2014-11-07 03:16:21.000
49.206.4.53         01  000003  2014-11-07 03:16:45.000
49.206.4.53         01  000003  2014-11-07 03:17:28.000
183.82.1.192        02  000004  2014-11-07 03:20:43.000
183.82.1.192        02  000004  2014-11-07 03:20:44.000
。。。。 当我运行以下查询时

select IncomingIP, ReaderID, TagID, TagScanTimeStamp, 
RANK() over (Partition by IncomingIP, ReaderID, TagID order by TagScanTimeStamp) as IdentityOrder 
from rt_tag_log_raw 
order by 4
我得到以下结果:

IncomingIP     ReaderID  TagID  TagScanTimeStamp        IdentityOrder

183.82.1.192        02  000007  2014-11-07 02:55:24.000     1
183.82.1.192        02  000007  2014-11-07 02:55:25.000     2
183.82.1.192        02  000007  2014-11-07 02:55:26.000     3
49.206.4.53         01  000003  2014-11-07 02:58:17.000     1
49.206.4.53         01  000003  2014-11-07 02:58:41.000     2
49.206.4.53         01  000003  2014-11-07 03:00:00.000     3
49.206.4.53         01  000003  2014-11-07 03:01:37.000     4
49.206.4.53         04  000003  2014-11-07 03:02:23.000     1
49.206.4.53         04  000003  2014-11-07 03:05:18.000     2
49.206.4.53         04  000003  2014-11-07 03:06:11.000     3
49.206.4.53         01  000002  2014-11-07 03:07:17.000     1
49.206.4.53         01  000002  2014-11-07 03:08:53.000     2
49.206.4.53         01  000002  2014-11-07 03:10:46.000     3
49.206.4.53         01  000002  2014-11-07 03:12:12.000     4
49.206.4.53         01  000003  2014-11-07 03:14:14.000     4
49.206.4.53         01  000003  2014-11-07 03:16:21.000     5
49.206.4.53         01  000003  2014-11-07 03:16:45.000     6
49.206.4.53         01  000003  2014-11-07 03:17:28.000     7
183.82.1.192        02  000004  2014-11-07 03:20:43.000     1
183.82.1.192        02  000004  2014-11-07 03:20:44.000     2
我希望IdentityOrder显示如下

IncomingIP     ReaderID  TagID  TagScanTimeStamp        IdentityOrder

183.82.1.192        02  000007  2014-11-07 02:55:24.000     1
183.82.1.192        02  000007  2014-11-07 02:55:25.000     1
183.82.1.192        02  000007  2014-11-07 02:55:26.000     1
49.206.4.53         01  000003  2014-11-07 02:58:17.000     2
49.206.4.53         01  000003  2014-11-07 02:58:41.000     2
49.206.4.53         01  000003  2014-11-07 03:00:00.000     2
49.206.4.53         01  000003  2014-11-07 03:01:37.000     2
49.206.4.53         04  000003  2014-11-07 03:02:23.000     3
49.206.4.53         04  000003  2014-11-07 03:05:18.000     3
49.206.4.53         04  000003  2014-11-07 03:06:11.000     3
49.206.4.53         01  000002  2014-11-07 03:07:17.000     4
49.206.4.53         01  000002  2014-11-07 03:08:53.000     4
49.206.4.53         01  000002  2014-11-07 03:10:46.000     4
49.206.4.53         01  000002  2014-11-07 03:12:12.000     4
49.206.4.53         01  000003  2014-11-07 03:14:14.000     5
49.206.4.53         01  000003  2014-11-07 03:16:21.000     5
49.206.4.53         01  000003  2014-11-07 03:16:45.000     5
49.206.4.53         01  000003  2014-11-07 03:17:28.000     5
183.82.1.192        02  000004  2014-11-07 03:20:43.000     6
183.82.1.192        02  000004  2014-11-07 03:20:44.000     6
每当IncomingIP、ReaderID或TagID发生变化时,我希望IdentityOrder增加1

我试过了,但我没能达到我想要的。如果我还不清楚我的要求,请告诉我

非常感谢您的帮助


谢谢

Isim是正确的,我们没有足够的信息来回答这个问题。但我想你说的是排名超过。它允许您根据自定义比较对记录进行分组和排序:

CREATE TABLE #scans (
    Id INT,
    Name varchar(50),
    Timestamp INT
)
GO

INSERT INTO #scans VALUES
    (1, 'Soda', 1111111),
    (2, 'Coke', 1111111),
    (3, 'Beer', 1111113),
    (4, 'Wine', 1111113),
    (5, 'Water', 1111114),
    (6, 'Water', 1111115),
    (7, 'Soda', 1111111)
GO

SELECT Id, Name, Timestamp
    ,RANK() OVER 
    (PARTITION BY Timestamp ORDER BY Name DESC) AS Rank
FROM #scans
ORDER BY Rank, Name;
GO

SELECT Id, Name, Timestamp
    ,RANK() OVER 
    (PARTITION BY Name ORDER BY Timestamp DESC) AS Rank
FROM #scans
ORDER BY Rank, Name;
GO

DROP TABLE #scans;
GO
试试这个

select IncomingIP, ReaderID, TagID, TagScanTimeStamp, 
Dense_Rank() over (order by IncomingIP, ReaderID, TagID) as IdentityOrder 
from #Yourtable
order by 4

排名依据是什么?你提到了时间戳,但我还是有点不清楚它是如何工作的。谢谢你的及时回复,很抱歉没有很清楚我的要求。我会简单地修改和即兴提出我的问题谢谢你的及时回复,很抱歉我的要求不是很清楚。我将简短地编辑和即兴提出我的问题Hi Paul,我之前尝试过这个查询,但它不起作用,因为这个查询将为第4、5、6、7行和第15、16、17、18行创建相同的排名。但我希望这两组行具有不同的标识等级,尽管IncomingIP、readerID和TagID是相同的,但它们不是连续的。