【发布时间】:2011-04-02 19:20:46
【问题描述】:
好的。如果这个问题已经涵盖,首先让我深表歉意。我确实看过,但没有一个解决方案解决了我的问题的细节。
我有一个包含超过 1.6 亿行数据的表,用于跟踪员工/服务器的状况。我想创建这个数据的一个子集并删除整个过程中发生的重复,但是在发生变化时保持变化的顺序。大多数员工的减少量将从 700 行(并且还在增加)减少到 1 行。
这是我想要达到的简化示例:
Given:
RowID Employee Server Timestamp
----- -------- ------ ---------
5 E000001 Serv-B May01
4 E000001 Serv-A Apr01
3 E000001 Serv-B Mar01
2 E000001 Serv-A Feb01
1 E000001 Serv-A Jan01
Doing a "Min(Timestamp) Group By Employee, Server" would yield:
Employee Server Timestamp
-------- ------ ---------
E000001 Serv-B Mar01
E000001 Serv-A Jan01
.
What I need is:
Employee Server Timestamp
-------- ------ ---------
E000001 Serv-B May01
E000001 Serv-A Apr01
E000001 Serv-B Mar01
E000001 Serv-A Jan01
表格和为其提供数据的进程不属于我们的小组,因此我不能影响那里的解决方案,我宁愿不被整个事情的副本所困扰。考虑到表格的大小,我实际上无法执行游标/RBAR 方法。如果退缩,我可以编写一个应用程序来执行此操作,但我想知道是否有任何来自 SQoLympus 的神有智慧在存储过程中执行此操作。提前致谢!
编辑:这是 SQL Server 2008 - 抱歉没有提及。
【问题讨论】:
-
什么 RDBMS 和版本?
Timestamp是什么数据类型?
标签: sql tsql sql-server-2008 duplicates sequence