在 Oracle 中更新一组行的字段库

塞尔瓦库马尔·杜赖潘迪扬

我有一个数据,如表(图像)所示。患者的第一次访问应在New_Review下标记为“新” 同一患者的其他访问应在同一列中标记为“审查”。

还帮助我如何在另一列中将患者第一次访问专业化标记为“新”。以及同一名患者在稍后作为“审查”对同一专业进行的其他访问

谢谢你。

Oracle 表数据

马麦轰炸机

只能数据库视图中定义列,如下面的示例所示

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还是REGNOSPECIALISATION

row_numberassing的序列号从开始1,因此与比较1,你有你的第一次访问

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章