我有一个数据,如表(图像)所示。患者的第一次访问应在New_Review列下标记为“新” 。同一患者的其他访问应在同一列中标记为“审查”。
还帮助我如何在另一列中将患者第一次访问专业化标记为“新”。以及同一名患者在稍后作为“审查”对同一专业进行的其他访问
谢谢你。
您只能在数据库视图中定义两列,如下面的示例所示
create view v as
select
REGNO, VISITDATE, SPECIALISATION,DOCID,
/* first visit of an RegNo */
case when row_number() over (partition by REGNO order by VISITDATE, DOCID) = 1
then 'New' else 'Review' end as New_Review,
/* first visit of an RegNo for Specialisation */
case when row_number() over (partition by REGNO, SPECIALISATION order by VISITDATE, DOCID) = 1
then 'New' else 'Review' end as New_Review_Spec
from tab
这有两个好处
首先,定义总是一致的,不需要应用逻辑来维护它。
其次,使用的方法ROW_NUMBER
也可以处理您在同一天进行多次访问的情况。请参阅 usedORDER BY
子句,其中还DOCID
用于控制具有相同日期的访问顺序。
请注意,在partition by
子句中,您使用要为其定义第一次访问的列。在你的情况下,或者REGNO
还是REGNO
和SPECIALISATION
。
该row_number
assing的序列号从开始1
,因此与比较1
,你有你的第一次访问。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句