我有一个如下所示的数据集(除了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 结束
提前致谢。
首先,虽然我不明白你做了什么,它会给你你想要的东西。序列号按日期顺序分配。我能看到的问题是结果显示错误顺序的行(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(PartID by CaseID ORDER BY CaseID,Order_Date ASC