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

如何用SAS Proc SQL为每个客户筛选参考日期后首个到期合同

SAS Proc SQL 批量筛选每个客户的首个到期合同

可以通过**窗口函数ROW_NUMBER()**实现批量分组处理,按客户维度筛选出指定参考日期后首个到期的合同,代码如下:

proc sql;
    create table first_due_contracts as
    select Client, Contract, Due_date
    from (
        select 
            Client, 
            Contract, 
            Due_date,
            /* 按客户分组,对符合条件的到期日升序排序,生成行号 */
            row_number() over (partition by Client 
                               order by Due_date asc) as rn
        from contracts
        /* 筛选到期日晚于参考日期的记录,SAS日期常量格式为DDMMMYYYY'd' */
        where Due_date > '19AUG2024'd
    ) as subquery
    /* 取每个客户组内的第一条记录(即最早到期的合同) */
    where rn = 1;
quit;

代码说明

  • partition by Client:按客户分组,保证每个客户的合同单独计算排序逻辑
  • order by Due_date asc:对每个客户符合条件的到期日从小到大排序,确保首个到期的合同排在首位
  • 日期条件:如果你的参考日期是字符串格式(如'2024/08/19'),可以用input('2024/08/19', yymmdd10.)转换为SAS日期类型,替换'19AUG2024'd
  • 若存在多个合同在同一天到期且均为首个到期的情况,ROW_NUMBER()会随机保留一条;如需保留所有同天到期的合同,可改用RANK()或DENSE_RANK()函数

内容的提问来源于stack exchange,提问作者Hanne DC

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 11:12:05