SQL计算—生成动态列结果集

       问题来源:http://bbs.csdn.net/topics/391012377 。

       1tb1)中部分源数据如下:

       Prjno      Subtask   Ddate      Num

       P9996     P9996-sub002 2015-01-01     123

       P9996     P9996-sub002 2015-01-02     134

       P9996     P9996-sub002 2015-01-03     345

       P9996     P9996-sub002 2015-01-04     55

       T0071     T-007-01 2015-01-01     3333

       T0071     T-007-01 2015-01-02     356

       T0071     T-007-01 2015-01-03     178

 

       现需要根据输入的日期参数查询当月该日期前所有日期的项目,如输入2015-01-03希望得到:

       Prjno     Subtask  2015-01-01     2015-01-02     2015-01-03

       P9996     P9996-sub002 123  134  345

       T0071     T-007-01 3333       356  178

 

 

       集算器实现代码如下:



 

       A1:查询月初到指定日期的的数据,其中d_date为输入的日期参数,如2015-01-03pdate@m(d_date)计算当月首日;

       A2:根据月初到当前日所有日期序列生成动态列结果空序表,如下:



 

       A3:代码前半句A1.group(Prjno,Subtask)首先按照Prjno,Subtask分组(集算器的分组会保存每组的明细),再使用~.groups(Ddate;sum(Num):Num)循环每个分组按日期分组汇总Num值,最后A2.record()将分组名称和汇总值写回A2的结果序表中,得到最终结果:



 

       集算器可被报表工具或java程序调用,调用的方法也和普通数据库相似,使用它提供的JDBC接口即可向java主程序返回ResultSet形式的计算结果,具体方法可参考相关文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值