欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > SQL,获取 ID 的历史状态

SQL,获取 ID 的历史状态

2024/10/25 15:21:19 来源:https://blog.csdn.net/smilejingwei/article/details/141194685  浏览:    关键词:SQL,获取 ID 的历史状态
sas系统的表tb存储病人的医疗历史记录,当Visit_code=Surgery时表示手术,Visit_code=Office表示咨询,每个病人有多条Visit_code,有时只有Surgery或只有Office:
IdVisit_DateVisit_code
A305/15/2004Surgery
A302/5/2005Office
B0112/7/2002Office
B0111/21/2002Surgery
C0112/1/2001Office
C0111/1/2001Office
C015/15/2001Surgery
C014/15/2001Surgery
C0212/1/2001Surgery
C0312/1/2001Office

要求计算出每个病人的历史状态,如果有过咨询,则 Office_Visit=1,否则为 0;如果手术后 6 个月内进行过咨询,则 SX_past_6mo=1,否则为 0:

IdOffice_VisitSX_past_6mo
A3010
B0111
C0111
C0200
C0310

编写SPL代码:

A
1=sas1.query("select * from tb order by Id,Visit_Date")
2=A1.group(Id)
.new(Id,(S=0,~.max( if( Visit_code=="Office", if( S==0 && Visit_code[-1]=="Surgery" && interval@m(Visit_Date[-1],Visit_Date)<=6,S=1,1),0))):Office_Visit, S: SX_past_6mo)

A1:通过JDBC从 sas 表取数,按Visit_code,Visit_Date 的顺序排序。

A2:按 Id 分组,根据分组新建二维表。~ 表示当前组,Visit_code[-1] 表示上一条记录的 Visit_code 字段,interval@m 用于求月份的间隔。

SPL开源地址

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com