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
或任何在您的情况下有意义的内容)亲爱的朋友,谢谢您的回答。这是我问题的一个简单例子。我真正的桌子完全不同。