BIRT报表一线揭秘1

前不久设计了一个很复杂的报表,中间涉及到汇总,又分类,再汇总,外连接,排序,前十等等

用到了63个超复杂sql的数据集,用了260个网格单元格

大部分sql数据集的查询语句如下:

select nvl(sum(J3.usdamt),0)   J3usdamt 
            from (select a.custno,
                         sum(a.usdamt/10000) as usdamt,
                         replace(wmsys.wm_concat(distinct a.usedetail),
                                 ',',
                                 '、') usedetail,
                         replace(wmsys.wm_concat(distinct
                                                 a.sourceanduse),
                                 ',',
                                 '、') sourceanduse,
                         ROW_NUMBER() OVER(ORDER BY sum(a.usdamt) desc) as rowno
                    from fex_transreg a, MULTILEVELDIC c
                   where Substr(a.trandate, 0, 7) = ?
                     and a.cancelstatus = '0'
                     and trim(a.itemcode) = trim(c.itemid)
                     and trim(c.recdec) in (select ITEMID
                            FROM MULTILEVELDIC
                           WHERE TYPEID = 'forex'
                             AND UPSYSID = 200
                             AND P_LEVEL = 4)
                   group by a.custno) J3
           where usdamt>=50 and J3.rowno <11 
设计器整体截图如下:

布局如下:

最终运行的效果如下图:

在这儿有个问题是,如果要在十行显示6个依据不同类别的汇总的排名第一至第十,而且这其中任何一种都有可能是空值,故而不能用外连接或者全连接的方式构建数据集,而且数据集的数据条目数有时候是不足十条,故而用动态行的方式可以放弃了,另外,要在汇总排序的当条记录中又分别列出汇总的哪些条目,这些汇总条目的数量也不固定,故而用嵌套报表的想法也要放弃了,最终采取了多数据集,多网格的方式。可见报表的一线工作是非常复杂的,设计一流的报表工具任重而道远。
PS:由于工作台屏幕巨大,截图也巨大,把图片另存一下或者用鼠标拖到新窗口中才能看到全貌。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值