gpt4 book ai didi

SAS:一次性为不同日期和表名称动态创建表

转载 作者:行者123 更新时间:2023-12-02 21:37:40 26 4
gpt4 key购买 nike

我坚持按日期过滤器动态创建表格。

我有 SAS 代码,用于在运行主代码之前设置日期过滤器。

这是日期代码;

data _null_;

/*ACTUAL DATES*/
R_act_beg=intnx('month',today(),-12,'beginning');
call symput('R_act_beg',R_act_beg);
R_act_end=intnx('month',today(),-1,'end');
call symput('R_act_end',R_act_end);
name_m=put(month(intnx('month',today(),-1)),z2.);
call symput('name_m',name_m);
name_y_act=put(year(intnx('month',today(),-1)),z4.);
call symput('name_y_act',name_y_act);
nameR_act=name_m||substr(name_y_act,3,4);
call symput('nameR_act',nameR_act);

这是主要代码之一;

PROC SQL;
CREATE TABLE DATA.PREMIUM&nameR_act AS
SELECT t1.POLICY_NO,
/* SUM_of_PREMIUM */
(SUM(t1.PREMIUM)) FORMAT=22.2 AS SUM_of_PREMIUM
FROM WH.V_PRODUCT t1
WHERE t1.ISSUE_DATE BETWEEN &R_act_beg AND &R_act_end AND t1.PRODUCT_NO IN
(
'421',
'423',
'424',
'425',
'404',
'433',
'430',
'444',
'441',
'443',
'453'
)
GROUP BY t1.POLICY_NO;
QUIT;

所以我应该回顾运行 12 个月的大约 10 个主要代码。是否可以动态创建日期代码,以便一次性运行主要代码 12 个月。

最佳答案

您可以构建以下代码

  • 第 1 步:创建dataset其中包含所有 12 个日期。

不确定您如何计算所有 12 个月的日期,所以我假设dataset All_dates包含您的所有日期带变量 - R_act_beg, R_act_end ,name_m,name_y_act,nameR_act 。该数据集包含 12 条记录,一条记录每月。

  • 第 2 步:创建 macro variables一口气过了12个月

<小时/>
proc sql;
select R_act_beg into: R_act_beg1 - :R_act_beg12 from all_dates;
select R_act_end into: R_act_end1 - :R_act_end12 from all_dates;
select name_m into: name_m1 - :name_m12 from all_dates;
select name_y_act into: name_y_act1 - :name_y_act12 from all_dates;
select nameR_act into: nameR_act1 - :nameR_act12 from all_dates;
quit;
  • 第 3 步:使用 do loop and && 运行代码 12 次
<小时/>
%macro run_12_times;

%do i=1 %to 12;
PROC SQL;
CREATE TABLE DATA.PREMIUM&nameR_act&&i. AS
SELECT t1.POLICY_NO,
/* SUM_of_PREMIUM */
(SUM(t1.PREMIUM)) FORMAT=22.2 AS SUM_of_PREMIUM
FROM WH.V_PRODUCT t1
WHERE t1.ISSUE_DATE BETWEEN &R_act_beg&&i. AND &R_act_end&&i. AND t1.PRODUCT_NO IN
(
'421',
'423',
'424',
'425',
'404',
'433',
'430',
'444',
'441',
'443',
'453'
)
GROUP BY t1.POLICY_NO;

%end;

%mend;
%run_12_times;

关于SAS:一次性为不同日期和表名称动态创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30389394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com