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

问题描述 投票:-1回答:2

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

我尝试过几件事:

案件 当COUNT(CaseID)> 1时 然后订购(Order_Date) AND Ser_no +1 结束

提前致谢。

case serial-number dense-rank
2个回答
0
投票

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

要对该订单进行排序,您可以尝试:

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

0
投票

感谢您的回复,对不起有误,因为ser_no还没有在我的表格中。那是想要计算的领域。

我今天早上自己完成了,但它看起来和你的措施几乎一样:

RANK()OVER(PartID by CaseID ORDER BY CaseID,Order_Date ASC

© www.soinside.com 2019 - 2024. All rights reserved.