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