Sql server 2012 在SQL Server 2012中,根据表中的不同行的日期顺序并按CustomerID分组,为其分配订单ID

Sql server 2012 在SQL Server 2012中,根据表中的不同行的日期顺序并按CustomerID分组,为其分配订单ID,sql-server-2012,Sql Server 2012,我有每个客户购买的产品的数据集,我想通过对日期列进行排序来为他们的交易下达订单 例如: SubID Date other columns OrderColumn ------------------------------------------------------------------------------ 1 2010/08/12

我有每个客户购买的产品的数据集,我想通过对日期列进行排序来为他们的交易下达订单

例如:

 SubID           Date                        other columns          OrderColumn  
 ------------------------------------------------------------------------------
   1                  2010/08/12                ......                      ?
   1                  2011/09/12                .......                     ?
   1                  2013/09/12                ......                      ?
   2                  2013/09/12                .......                     ?
   2                  2011/04/03                ......                      ?
我想为每个客户的交易下订单

大概是这样的:

 SubID           Date                        other columns          OrderColumn  
 ------------------------------------------------------------------------------
  1                  2010/08/12                ......                      1
  1                  2011/09/12                .......                     2
  1                  2013/09/12                ......                      3
  2                  2013/09/12                .......                     2
  2                  2011/04/03                ......                      1

感谢您的帮助

您可以使用
行号()
窗口功能:

SELECT
   SubID,
   [Date],
   OrderColumn = ROW_NUMBER() OVER (PARTITION BY SubID ORDER BY [Date] DESC)
FROM
   dbo.YourTable 
这是按
SubID
对数据进行的“分区”,每个“分区”(或数据组)将获得一个从1开始的递增数字-基于订单日期


(旁注:拥有一个名为just
Date
的列是非常不幸的-首先,它不是很具有描述性的…您在这里谈论的是什么类型的日期?此外,
Date
是一个保留字(数据类型)在SQL Server中!您应该努力使用更有意义的内容——
OrderDate
DateCreated
或任何在您的情况下有意义的内容)

亲爱的朋友,谢谢您的回答。这是我问题的一个简单例子。我真正的桌子完全不同。