首页 > 数据库技术 > 详细

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

时间:2015-06-20 02:11:40      阅读:300      评论:0      收藏:0      [点我收藏+]

? ? ???问题来源: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

?

?

? ? ???集算器实现代码如下:


bubuko.com,布布扣
?

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

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


bubuko.com,布布扣
?

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


bubuko.com,布布扣
?

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

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

原文:http://datamachine.iteye.com/blog/2220764

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!