You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAS技术求助:按唯一请求ID提取审批人并生成新列

解决方案

针对你的需求,我们可以通过两步操作实现:先提取每个request no对应的审批人,再将其合并回原数据集生成approver列。以下是两种适合SAS新手的实现方式:

方法1:使用PROC SQL(推荐,代码简洁)

/* 第一步:提取每个request no对应的审批人 */
proc sql;
    create table approver_list as
    select distinct request_no, to_user as approver
    from 你的原数据集名
    where workflow_status like '%approval%'; /* 筛选包含approval的状态 */
quit;

/* 第二步:将审批人列合并回原数据集 */
proc sql;
    create table 最终数据集 as
    select a.*, b.approver
    from 你的原数据集名 a
    left join approver_list b
    on a.request_no = b.request_no;
quit;

代码说明

  • distinct确保每个request no只保留一条审批人记录(如果同一申请有多个审批人,会保留所有唯一值,若需取第一个可调整逻辑)
  • like '%approval%'匹配所有包含"approval"的状态文本
  • left join保证原数据集的所有记录都被保留,即使没有对应审批人时approver列会显示缺失值

方法2:使用DATA STEP(适合理解分组逻辑)

/* 先对原数据集按request no排序 */
proc sort data=你的原数据集名 out=sorted_data;
    by request_no;
run;

/* 提取每个request no的审批人 */
data approver_list;
    set sorted_data;
    by request_no;
    if workflow_status like '%approval%' and first.request_no then do; /* 取每个申请的第一个审批人 */
        approver = to_user;
        output;
        keep request_no approver;
    end;
run;

/* 合并回原数据集 */
data 最终数据集;
    merge sorted_data approver_list;
    by request_no;
run;

代码说明

  • proc sort确保同一request no的记录集中在一起
  • first.request_no标记每个分组的第一条记录,这里用来提取每个申请的第一个审批人
  • merge语句按request no匹配,完成列的添加

内容的提问来源于stack exchange,提问作者Niken Widowati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 15:10:00