SQL,获取 ID 的汗青状态

[复制链接]
发表于 2026-2-6 14:07:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
  1. 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开源所在
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表