如何在SQL中添加序列/对数据进行排序

SNW

我试图将序列顺序添加到原始数据中,并且想知道是否存在一种有效的方法来执行此操作,而没有一会儿存在的循环,因为我要订购的记录超过一百万条。

示例数据集:

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中执行此操作

Nishant Gupta

使用 ROW_NUMBER()

SELECT CustomerID, StartDate, EndDate, EnrollID,
ROW_NUMBER() OVER(
                  PARTITION BY CustomerId 
                  ORDER BY StartDate
                           ,EndDate 
                           ,EnrollID
                  ) AS Sequence_Order
FROM Table1

输出:

CustomerID  StartDate   EndDate EnrollID    Sequence_Order
1   1990-01-01  1991-01-01  14994   1
1   1992-01-01  1993-01-01  14996   2
1   1993-01-01  1994-01-01  14997   3
2   1990-01-01  1992-01-01  14995   1
2   1993-01-01  1995-01-01  14997   2
2   1995-01-01  1996-01-01  14998   3
3   1990-01-01  1991-01-01  15000   1
3   1992-01-01  1993-01-01  15001   2
3   1995-01-01  1996-01-01  15007   3

请点击演示的链接:

http://sqlfiddle.com/#!18/dbe66/2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Apache Flink中对数据集进行排序?

如何在 ReactJs 中对数据进行排序

如何在Spring JPA中对数据进行排序?

如何在Pandas中对数据透视表进行排序

如何在PHP中对数组和数据进行排序?

如何在Pyspark中对数据框进行排序

如何在RecyclerView中对数据进行排序

如何在 mongodb 中对数据进行排序 - 最佳实践

如何在 jquery 中对数据属性进行排序?

如何在 ReactJs 中对数组数据进行排序

如何在Apache Arrow中对数据进行排序

如何在MapReduce中按降序对数据进行排序?

如何在 Next js 中对数据进行排序?

如何在不使用Spark SQL的情况下在Spark中对数据帧进行排序?

如何在BigQuery标准SQL中对数组进行排序?

如何在PL / SQL中对数字表进行排序?

如何在sql中对数据输出进行表示?

如何在Firebase中对数据排序?

SQL Python:如何在打开数据库之前对数据库进行排序?

如何在Laravel HTML中对数据库中的数据进行排序

如何在重复一些数据的php数组中对数据进行排序和分组?

如何在python中的字典列表的字典中对数据进行排序?

如何在 swift 4 中对数组中的 JSON 数据进行排序

如何在对数据进行排序时更新 RecyclerView?

如何在php中使用数组对数据进行排序?

如何使用SAS中的数据步骤对数据进行排序

如何在表中按升序和降序对数据进行排序

如何在Julia中按多个列对数据框进行排序

如何在javascript中对数据数组进行分组和排序?