我有一个如下所示的数据集(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
THEN ORDER BY(订购日期)
AND Ser_no +1
结束
谢谢。
答案 0 :(得分:0)
首先,尽管我不明白您的所作所为,但它却为您提供了想要的东西。序列号是按日期顺序分配的。我看到的问题是结果显示的行顺序错误(1、3、2而不是1、2、3)。
要排序该顺序,您可以尝试以下操作:
SELECT *, ROW_NUMBER() OVER (PARTITION BY caseid ORDER BY caseid, order_date) AS ser_no
FROM [Table]
答案 1 :(得分:0)
感谢您的回复, 抱歉,我的表中还没有ser_no。这是一个要计算的字段。
我今天早上自己做完了,但是看起来几乎和您的测量一样:
RANK()OVER(按CaseID排序或按CaseID,Order_Date ASC排序