oracle - 在 Oracle 中更新一组行的字段库
问题描述
我有一个如表(图像)所示的数据。患者的首次就诊应在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
orREGNO
和 SPECIALISATION
。
row_number
assing 的序号从开始1
,所以和你比较有1
你的第一次访问。
推荐阅读
- machine-learning - 用于训练阿拉伯语 spacy NER 模型的 Python 代码不给出结果或错误
- excel - 为用户打开特定工作表
- flutter - 如何为颤动的网页提供互联网连接?
- python - 有条件地将一个 DataFrame 列中的值替换为另一列中的值
- c# - 在 Visual Studio 2019 的添加新项目中缺少 JSON 文件类型
- java - Kafka 消费者无法在 Windows 上读取数据
- javascript - 雷达形状 - 雷达图 js
- javascript - 为什么不执行toggleClass?
- kubernetes-helm - 如何在 helm 图表中使用 if 条件
- security - 如何在长时间运行的后台进程中正确使用访问令牌?