date - 在 SAS 中创建带有日期的宏变量
问题描述
我有两个数据集 - 一个具有 accountid 和对应于每个 accountid 的不同日期。数据看起来像这样
帐户ID | 开户日期 |
---|---|
1234567 | 2020 年 11 月 21 日 |
1254268 | 2020 年 11 月 30 日 |
第二个数据是交易级别的每日数据,看起来像这样,每个帐户 ID 都有每日余额。
帐户ID | 交易日期 | 客户_巴尔 |
---|---|---|
1234567 | 2020 年 11 月 21 日 | 400英镑 |
1254267 | 2020 年 11 月 22 日 | 100英镑 |
1254268 | 2020 年 11 月 22 日 | 50英镑 |
1254268 | 2020 年 11 月 23 日 | 0 |
1254268 | 2020 年 11 月 24 日 | 20英镑 |
1254268 | 2020 年 11 月 25 日 | 45英镑 |
有50个不同的账户,开户日期不同
我想创建一个宏代码,它从第一个表中获取不同的 accountid,然后从第二个表中获取从开户日期到接下来十天的余额。
我已经为一个日期创建了宏,然后如何从该帐户开立日期创建接下来的十天
proc sql;
select distinct account_open_date into :exec_date from abc
order by account_open_date;
data _null_;
CALL SYMPUT('run0',put(intnx('day',&run.,0,'s'), yymmddn8.));
CALL SYMPUT('run1',put(intnx('day',&run.,1,'s'), yymmddn8.));
CALL SYMPUT('run2',put(intnx('day',&run.,2,'s'), yymmddn8.));
CALL SYMPUT('run3',put(intnx('day',&run.,3,'s'), yymmddn8.));
CALL SYMPUT('run4',put(intnx('day',&run.,4,'s'), yymmddn8.));
CALL SYMPUT('run5',put(intnx('day',&run.,5,'s'), yymmddn8.));
CALL SYMPUT('run6',put(intnx('day',&run.,6,'s'), yymmddn8.));
CALL SYMPUT('run7',put(intnx('day',&run.,7,'s'), yymmddn8.));
CALL SYMPUT('run8',put(intnx('day',&run.,8,'s'), yymmddn8.));
CALL SYMPUT('run9',put(intnx('day',&run.,9,'s'), yymmddn8.));
CALL SYMPUT('run10',put(intnx('day',&run.,10,'s'), yymmddn8.));
run;
如何将所有不同的 account_open_dates 存储在宏中,然后从每个 accountid 的第二个表中取出接下来十天的交易
解决方案
你真的不需要宏来进行这个处理。
一个简单的 SQL 连接将在单个表中获得您需要的所有内容,该表可以在使用语句的步骤PROC
或步骤中进行进一步处理。DATA
BY
例子:
假定日期变量包含 SAS 日期值(从 SAS 日期开始的天数为整数)。
proc sql;
create table first_ten_days as
select
accounts.account_id
, accounts.open_date
, transactions.transaction_date
, transactions.balance
from accounts
join transactions
on accounts.account_id = transactions.account_id
where transactions.transaction_date - accounts.open_date <= 10
order by account_id, transaction_date
;
proc ...
by account_id;
...
推荐阅读
- python - 用许多 if 子句总结 python 中的代码
- python - 如何将字典的键值与另一个字典值匹配并附加结果?
- c++ - 无法使用 Python 3 加载 Python 模块
- php - Symfony 4.2 - Doctrine / schema:validate => 名称为 'fablab.appartment_user 的表已经存在
- javascript - 当特定方向上没有更多图像时隐藏 swiper js 导航按钮(左和右)
- google-chrome - 为什么我的 CSS 关键帧动画在 Chrome 中不起作用?他们在 FireFox 工作
- android - Fileprovider 中的 Android 路径无法识别
- java - 资源文件夹中的文件对于 docker 文件不可见
- c++ - 调用对象方法传递超类期望子类
- .net - EF Core 如何将表名称映射到实体名称,而不是 DbSet 名称?