我有一个病人就诊表,每一行代表一次就诊。有一个列具有唯一的患者ID,表示访问的是哪个客户。我想添加另一列,显示该患者ID在数据集中的第n次出现。第一次访问显示1,第二次访问显示2,以此类推。我试着搜索类似的问题,但还没有找到任何东西,你的帮助将非常感激!
您可以使用row_number()
:
select v.*,
row_number() over (partition by patient_id order by visit_date) as seqnum
from visits v;
这被称为窗口函数(或者更具体地说是排序函数)。它为每个"分区"从1
开始枚举没有空格的行。(即每个patient_id
)。order by
指定顺序。