当前位置: 首页 > news >正文

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开源地址

http://www.lryc.cn/news/424167.html

相关文章:

  • 阅文集团:摇不动的IP摇钱树
  • ETL数据集成丨将SQL Server数据同步至Oracle的具体实现
  • 20240814软考架构-------软考51-55答案解析
  • JavaEE 的入门
  • vue3+ts 前端word文档下载文件时不预览直接下载方法(支持 doc / excel / ppt / pdf 等)
  • Java 空值与null 形参与实参学习
  • 【QT常用技术讲解】QTableView添加QCheckBox、QPushButton
  • linux监控命令
  • SpringBoot入门笔记
  • python 华为od 单词接龙
  • Vue+Echart实现地图省市区三级下钻
  • Apache Tomcat 信息泄露漏洞排查处理CVE-2024-21733)
  • 51单片机-LED实验
  • 无人机开启农林植保新篇章
  • 第N4周:NLP中的文本嵌入
  • C++高精度减法
  • protobuf cmakelist,msvc utf-8设置
  • Haproxy讲解
  • K8S系列——一、Ubuntu上安装Helm
  • 排序: 插入\希尔\选择\归并\冒泡\快速\堆排序实现
  • OpenCV图像处理——按最小外接矩形剪切图像处理ROI后映射回原图像
  • Linux中以单容器部署Nginx+ASP.NET Core
  • 【秋招笔试】8.11大疆秋招(第三套)-三语言题解
  • 标题:打造编程学习的知识宝库:高效笔记记录与整理
  • 【Rust光年纪】Rust 官方提供的关键工具概览:代码检查、格式化和依赖管理
  • 【Python学习-UI界面】PyQt5 小部件8-QSlider 数值滑动
  • MapReduce入门教程
  • JDBC1 Mysql驱动,连接数据库
  • LeetCode 205 同构字符串
  • ARM高性能计算(HPC)处理器Neoverse介绍