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



我有一个如下所示的数据集(除了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    |
+--------+------------+--------+

如何根据我的日期为每个案例 ID 获取序列号。因此,特定案例 ID 中的第一个日期获得数字 1,此案例 ID 中的第二个日期获得数字 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还没有在我的桌子上。这是想要计算的字段。

我今天早上自己完成了它,但它看起来与您的措施几乎相同:

RANK(( OVER(按 CaseID 顺序划分,按 CaseID 排序,Order_Date ASC

最新更新