PROC SQL / SAS - 获取每个月的活动产品?
PROC SQL / SAS - Get every month of an active product?
各位网友大家好,我需要你们的帮助。我是 SQL 编程的极度新手,我需要帮助来处理我正在使用的东西。
这是我现在在 TABLE1 中的内容
CustNbr ProductNm ExpirationDt(date value)
AAA111 Product1 15MAY2017
AAA112 Product1 21JAN2017
这就是我想要的:
CustNbr Yr Mth ProductNm
AAA111 2017 01 Product01
AAA111 2017 02 Product01
AAA111 2017 03 Product01
AAA111 2017 04 Product01
AAA111 2017 05 Product01
AAA112 2017 01 Product01
本质上,我希望每月查看客户对活跃产品的看法,而不仅仅是他们的到期日期。我可以用什么样的表达方式来重现我想要的table?
非常感谢抽出时间。
使用下面的代码
SELECT CustNbr, YEAR(ExpirationDt) AS Yr, MONTH(ExpirationDt) AS Mnt, ProductNm
FROM TableName
这是一种让您的数据爆炸式增长的方法。您需要 select 开始日期。 INTNX 函数对于在日期范围内导航很方便。
data have;
input CustID $ ProdID $ ExpDate ;
attrib
ExpDate format=date9. informat=date9.
;
datalines;
AAA111 Product1 15MAY2017
AAA112 Product1 21JAN2017
run;
data want;
set have;
* Which start date do you want ?;
start_date = today(); * looking forward only;
start_date = intnx('year', ExpDate, 0); * first of the year of the expiration date;
start_date = intnx('year', today(), 0); * first of the year at run-time;
date = start_date;
do index = 1 by 1 while (date < ExpDate);
year = Year(date);
month = Month(date);
output;
date = intnx('month', date, 1);
if index > 1e5 then leave; * guard against coding/data errors causing to many loops;
end;
format month z2.;
keep CustID ProdID year month;
run;
各位网友大家好,我需要你们的帮助。我是 SQL 编程的极度新手,我需要帮助来处理我正在使用的东西。
这是我现在在 TABLE1 中的内容
CustNbr ProductNm ExpirationDt(date value)
AAA111 Product1 15MAY2017
AAA112 Product1 21JAN2017
这就是我想要的:
CustNbr Yr Mth ProductNm
AAA111 2017 01 Product01
AAA111 2017 02 Product01
AAA111 2017 03 Product01
AAA111 2017 04 Product01
AAA111 2017 05 Product01
AAA112 2017 01 Product01
本质上,我希望每月查看客户对活跃产品的看法,而不仅仅是他们的到期日期。我可以用什么样的表达方式来重现我想要的table?
非常感谢抽出时间。
使用下面的代码
SELECT CustNbr, YEAR(ExpirationDt) AS Yr, MONTH(ExpirationDt) AS Mnt, ProductNm
FROM TableName
这是一种让您的数据爆炸式增长的方法。您需要 select 开始日期。 INTNX 函数对于在日期范围内导航很方便。
data have;
input CustID $ ProdID $ ExpDate ;
attrib
ExpDate format=date9. informat=date9.
;
datalines;
AAA111 Product1 15MAY2017
AAA112 Product1 21JAN2017
run;
data want;
set have;
* Which start date do you want ?;
start_date = today(); * looking forward only;
start_date = intnx('year', ExpDate, 0); * first of the year of the expiration date;
start_date = intnx('year', today(), 0); * first of the year at run-time;
date = start_date;
do index = 1 by 1 while (date < ExpDate);
year = Year(date);
month = Month(date);
output;
date = intnx('month', date, 1);
if index > 1e5 then leave; * guard against coding/data errors causing to many loops;
end;
format month z2.;
keep CustID ProdID year month;
run;