8.8 行转列,同时列间计算

 

在行转列的同时执行列间计算。
根据用户支付数据明细表,统计各个用户 2014 年每月应付金额的汇总表。

ID customID name amount_payable due_date amount_paid pay_date
112101 C013 CA 12800 2014/02/21 12800 2014/12/19
112102 C013 CA 3500 2014/06/15 3500 2014/12/15
112103 C013 CA 2600 2015/03/21

要求根据指定年份(如 2014),输出每月应付金额,若无当月数据,则当月应付金额为上月该值。

name 1 2 3 4 5 6 7 8 9 10 11 12
CA 12800 12800 12800 12800 16300 16300 16300 16300 16300 16300 16300

先产生空结果集后追加数据,这里要追加的数据需要经常一系列计算才能得到。

脚本:

A B
1 =T(“Payment.txt”).select(year(due_date)==2014)
2 =create(name,${12.().concat@c()}) =A1.group(customID)
3 for B2 =12.(null)
4 >A3.run(B3(month(due_date))= amount_payable)
5 >B3.run(~+=~[-1])
6 =A2.record(B2.name|B3)

A1:从文件中导入 2014 年数据。
A2:生成包含 12 个月的空序表。
A3:按 customID 分组。
A3~B6:循环分组,B4 设置相应月份的应付金额。
B5 将空值置为前一个月的数值,新增应付款项时累加。
B6 将记录插入结果序表中。