【发布时间】:2018-10-03 01:11:55
【问题描述】:
我正在尝试将序列顺序添加到我的原始数据中,并且想知道是否有一种有效的方法可以在没有 while 存在循环的情况下执行此操作,因为我有超过一百万条记录要排序。
示例数据集:
CustomerID StartDate EndDate EnrollID
-------------------------------------------
1 1/1/1990 1/1/1991 14994
2 1/1/1990 1/1/1992 14995
2 1/1/1993 1/1/1995 14997
1 1/1/1992 1/1/1993 14996
1 1/1/1993 1/1/1994 14997
2 1/1/1995 1/1/1996 14998
3 1/1/1990 1/1/1991 15000
3 1/1/1992 1/1/1993 15001
3 1/1/1995 1/1/1996 15007
重新排序的数据应根据 min(startdate)、min(enddate)、min(enrollid) 为每个客户 id 添加一个序列/订单
最终输出数据集应如下所示,其中每个 customerID 记录按 min(StartDate)、min(EndDate)、min(EnrollID) 排序
CustomerID StartDate EndDate EnrollID Sequence_Order
----------------------------------------------------------
1 1/1/1990 1/1/1991 14994 1
1 1/1/1992 1/1/1993 14996 2
1 1/1/1993 1/1/1994 14997 3
2 1/1/1990 1/1/1992 14995 1
2 1/1/1993 1/1/1995 14997 2
2 1/1/1995 1/1/1996 14998 3
3 1/1/1990 1/1/1991 15000 1
3 1/1/1992 1/1/1993 15001 2
3 1/1/1995 1/1/1996 15007 3
需要在 T-SQL 中执行此操作的最快方法
【问题讨论】:
-
您可以分批完成还是需要一次性完成?插入新记录时会发生什么?可以添加索引吗?存在哪些索引?
-
你可以在你的
SELECT语句中使用row_number()来完成它
标签: sql database tsql sql-server-2014