如何将SAS中if-then do逻辑通过SQL CASE WHEN语句改写实现
实现方案
完全可以通过CASE WHEN语句实现你描述的SAS分支逻辑,三个新字段分别对应写CASE WHEN判断即可,具体实现代码如下:
-- 假设原表名为your_table,可替换为你的实际表名 SELECT x, y, z, -- 新字段a的计算逻辑 CASE WHEN x>0 AND y>0 AND z<0 THEN x WHEN x<0 AND y<0 AND z>0 THEN 0 ELSE NULL -- 可根据业务需求修改为其他默认值 END AS a, -- 新字段b的计算逻辑 CASE WHEN x>0 AND y>0 AND z<0 THEN y + x WHEN x<0 AND y<0 AND z>0 THEN -y ELSE NULL -- 可根据业务需求修改为其他默认值 END AS b, -- 新字段c的计算逻辑 CASE WHEN x>0 AND y>0 AND z<0 THEN 0 WHEN x<0 AND y<0 AND z>0 THEN z ELSE NULL -- 可根据业务需求修改为其他默认值 END AS c FROM your_table;
补充说明
- 以上语法完全兼容SAS SQL,可直接在SAS环境中运行
- 原SAS代码未覆盖两个分支条件都不满足的场景,你可以根据实际业务规则修改各个
CASE WHEN中的ELSE分支,设置对应默认值
内容的提问来源于stack exchange,提问作者user584534
相关产品推荐
相关产品推荐

