根据日期为每个 id 添加序列号

Add serial number for each id based on dates

我有一个如下所示的数据集(Ser_NO 除外,这是我要创建的字段)。

+--------+------------+--------+
| CaseID | Order_Date | Ser_No |
+--------+------------+--------+
|   44   | 22-01-2018 |   1    |
+--------+------------+--------+
|   44   | 24-02-2018 |   3    |
+--------+------------+--------+
|   44   | 12-02-2018 |   2    |
+--------+------------+--------+
|   100  | 24-01-2018 |   1    |
+--------+------------+--------+
|   100  | 26-01-2018 |   2    |
+--------+------------+--------+
|   100  | 27-01-2018 |   3    |
+--------+------------+--------+

如何根据我的日期为每个 CaseId 获取序列号。因此,特定 CaseID 中的第一个日期获得编号 1,此 CaseID 中的第二个日期获得编号 2,依此类推。 我正在与 T-SQL 顺便说一句,

我已经尝试了一些方法:

案例
当计数(案例 ID)> 1
然后按 (Order_Date)
排序 和 Ser_no +1
结束

提前致谢。

首先,虽然我不明白你做了什么,但它给了你你想要的。序列号按日期顺序分配。我看到的问题是结果以错误的顺序向您显示行(1、3、2 而不是 1、2、3)。

要排序,您可以试试这个:

SELECT *, ROW_NUMBER() OVER (PARTITION BY caseid ORDER BY caseid, order_date) AS ser_no
FROM [Table]

感谢您的回复, 抱歉造成误会,因为 ser_no 还不在我的 table 中。那就是要计算的字段。

我今天早上自己完成的,但是看起来和你的尺寸差不多:

RANK() OVER(PARTITION BY CaseID ORDER BY CaseID, Order_Date ASC