【发布时间】:2017-04-22 17:59:02
【问题描述】:
我有一个大型数据集(下面称为输入),其中包含各种信息,例如销售日期、交易日期、付款、销售。
用户可以按年、季度或月生成报表,以显示某个销售年度的特定月/季度/年的付款金额。因此,您可以在首次销售 5 年后付款,即 2016 年的付款与 2011 年的销售年度有关。
用户可以通过使用宏变量(即%let ReportBasis = Year)来决定是否希望在代码开头按月/季度/年来设置这些付款期,并且可以通过其余部分调用ReportBasis无需手动调整的代码。
报告是使用以下方法生成的:
proc sql;
create table report as
select sales_year, &ReportBasis, Sum(Sales) as Sales
from input
group by sales_year, &ReportBasis;
quit;
现在我遇到的问题是,如果在特定时期内没有针对所有相关销售年份的付款,那么该时期就没有行。这会产生布局问题。
我需要一个解决方案,由于宏观变量的性质(从一年到一个月到另一个季度),它可以是动态的。
所以我有这个(例子):
2011 Month 11 100
2011 Month 12 250
2011 Month 13 85
2011 Month 15 90
2011 Month 16 300
但我需要这个:
2011 Month 11 100
2011 Month 12 250
2011 Month 13 85
2011 Month 14 0
2011 Month 15 90
2011 Month 16 300
在我的所有数据(甚至其他年份 2012 年、2013 年等)中,第 14 个月没有实际付款,所以它没有出现在我的第一个表中,但第二个表仍然聪明地知道包含它.
提前致谢。
【问题讨论】:
-
使用日历表(谷歌搜索)