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

如何在PROC SQL中实现表内NPV值与对应日期汇率相乘

问题根因

你现有代码的第二个PROC SQL步骤中,关联外币侧(a表)和PLN侧(b表)的条件仅包含ID,没有加入日期匹配逻辑,导致同一个ID下不同日期的记录交叉关联,最终出现单条NPV记录匹配到全表所有日期汇率的异常结果。

修正后代码
/* 第一步按日期+币种匹配汇率逻辑保持不变 */
proc sql;
    create table tmp_cirs_kurs as
    select a.*,
           b.KURS
    from tmp_cirs a
    left join kursy b on a.WALUTA=b.WALUTA and a.DATA_DANYCH=b.DATA_DANYCH
;
quit;

proc sql;
    create table cirs as
    select 
            a.DATA_DANYCH,
            a.DATA_MATURY,
            a.DATA_START,
            a.ID,
            a.INSTRUMENT,
            a.WALUTA as WALUTA_REC,
            b.WALUTA as WALUTA_PAY,
            a.KURS as KURS_REC,
            b.KURS as KURS_PAY,
            a.NOMINAL_REC,
            b.NOMINAL_PAY,
            a.NPV as NPV_REC,
            a.NPV*a.KURS as NPV_REC_PLN,
            b.NPV as NPV_PAY,
            b.NPV*b.KURS as NPV_PAY_PLN
    from 
            ( select * 
              from tmp_cirs_kurs
              where WALUTA ne "PLN") as a
    left join 
            ( select * 
              from tmp_cirs_kurs
              where WALUTA eq "PLN") as b
    /* 新增日期匹配条件,仅关联同一业务日期下的记录 */
    on a.ID=b.ID and a.DATA_DANYCH = b.DATA_DANYCH
    order by a.ID, a.DATA_DANYCH
;
quit;
验证说明
  • 修正后只会匹配同一ID、同一业务日期下的外币应收和PLN应付记录,不会出现跨日期的交叉关联
  • 最终计算得到的PLN计价NPV均为对应业务日期汇率折算的结果,符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:36:06