将计数/实例编号列添加到表中(SQL开发人员)
我有一个表格,列有汽车id、停车位置、到达时间和离开时间。我想添加一列停止序列,它将从1开始,对于具有相同车号的每一行增加1,然后对于下一个车号(按车号订购时,到达时间)再次从1开始 应该是这样的:将计数/实例编号列添加到表中(SQL开发人员),sql,oracle-sqldeveloper,gtfs,Sql,Oracle Sqldeveloper,Gtfs,我有一个表格,列有汽车id、停车位置、到达时间和离开时间。我想添加一列停止序列,它将从1开始,对于具有相同车号的每一行增加1,然后对于下一个车号(按车号订购时,到达时间)再次从1开始 应该是这样的: car_id stop_lcn arr_time leave_time stop_sequence A Home -- 0900 1 A Shop 1000 110
car_id stop_lcn arr_time leave_time stop_sequence
A Home -- 0900 1
A Shop 1000 1100 2
A Work 1130 1700 3
B Home -- -- 1
C Home -- 0900 1
C School 0930 1600 2
如果有人能告诉我如何添加这个额外的专栏,我将非常感谢您的帮助 只需使用分析函数即可:
select c.*,
row_number() over (partition by car_id order by leave_time) as stop_sequence
from cars c;
事实上,在写了这篇文章之后,我看到@Lennart在评论中给出了这个答案。如果此人回答了问题,我将删除此答案。为什么需要添加列?您可以将停止顺序计算为
row\u number()!我不知道这个问题。。。我仍然需要添加列,因为其他人需要一个需要“stop_sequence”列的过程的表。我会让其他人知道如何计算它,而不是添加列。它可以使数据本身没有意义。删除或插入现有组的行会使序列中断。只是想考虑一下。您可能有很好的理由来解释您正在做的事情,我只想指出在表上添加视图的可能性:create view。。。从T
中选择车辆id、停止lcn、到达时间、离开时间、行号()作为停止顺序。现在程序可以使用视图了。谢谢@Lennart-我现在已经启动并运行了!