根据日期为每个 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
我有一个如下所示的数据集(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