首页 新闻 会员 周边

Java有关开发报表的问题,求帮助!

0
悬赏园豆:200 [已解决问题] 解决于 2014-06-19 18:58

数据库结构是这样的

当然数据不止这么点,名称也有20多个都是固定的,怎么样才能查询到数据并且在JSP页面中显示这样的数据,数据库是Oracle,使用的spring框架,要求还能导出Excel

这些具体怎么实现,麻烦各位大师详细点,谢谢了

问题补充:

sql要求的是原生态SQL

5暖暖的主页 5暖暖 | 初学一级 | 园豆:22
提问于:2014-06-17 14:33
< >
分享
最佳答案
0

这是我建的表,T表示投诉,B表示抱怨,J表示举报,表为test,下面是sql代码。

 

select * from (
select a.月份,a.类别,
sum(case when a.名称='T' then 1 else 0 end) 投诉类统计,
sum(case when a.名称='B' then 1 else 0 end) 抱怨类统计,
sum(case when a.名称='J' then 1 else 0 end) 举报类统计,
count(a.名称) 总计
from test a group by a.月份,a.类别

union all

select b.月份,'总计',
sum(case when b.名称='T' then 1 else 0 end) 投诉类统计,
sum(case when b.名称='B' then 1 else 0 end) 抱怨类统计,
sum(case when b.名称='J' then 1 else 0 end) 举报类统计,
count(b.名称) 总计
from test b group by b.月份
) order by 1,2

 

下面是结果图。

希望能帮到你。

 

关于导出excel,一个就是改页面type为excel,还有一个就是使用第三方jar,poi,jxl什么的生成excel.

收获园豆:200
yhdino | 小虾三级 |园豆:701 | 2014-06-18 10:49

order by 1,2是指月份排序吗?我运行的时候总是报column ambiguously defined错误

5暖暖 | 园豆:22 (初学一级) | 2014-06-19 15:59

@5暖暖: order by 1,2 指的是按1,2列排序,也就是按月份,和类别进行排序

yhdino | 园豆:701 (小虾三级) | 2014-06-19 22:37

@5暖暖: 另外你说的问题,由于我在pl/sql按照你给的例子测试没有出现,所以现在不好说具体问题在哪里。你的环境我也不太清楚,按照网上的说法,需要加上别名。

下面是我查到的问题可能原因:

还有一种情况也会出现该问题 
select t.name,t.name,t.name
     from Teacher t LEFT OUTER JOIN Student s on t.studentid = s.id
sql语句本身是没有问题的,不会在数据库客户端或诸如PL/SQL之类的工具中报错并且能正常查询出结果
但是hibernate的查询却会报上面的错误,那么问题应该出在hibernate方言或者是jdbc驱动上
解决方法是给重复的数据加上别名:
select t.name as name1,t.name as name2,t.name as name3    
     from Teacher t LEFT OUTER JOIN Student s on t.studentid = s.id 

yhdino | 园豆:701 (小虾三级) | 2014-06-19 22:44

@5暖暖: 另外这里还有一个问题就是类别排序,我这里是按字符串排序,这样做是有问题的,最好的办法是多一列序号列用来排序,例如A业务,序号1,B业务序号2,这样我就可以把总计,人为调整成9999或者更大,最后按月份,以及这个序号进行排序才能确保总计都在每个月份最后一个显示。

yhdino | 园豆:701 (小虾三级) | 2014-06-19 23:30

@yhdino: 还有一个问题,如果我想按照月排列,像下面那样的,就是不管查询到的数据有没有都是这样固定的格式的怎么做?

5暖暖 | 园豆:22 (初学一级) | 2014-06-20 14:32

@5暖暖: 不好意思,不在上班时间,没办法测试语句。

但是如果要按你这样的话,比较麻烦。打个比方,有的月份有A,有的月份没有A,这就不是一个简单的SQL就可以搞定的事情。当然也不是没有办法做:

一种就是利用存储过程来遍历,补齐没有的类别。

一种就是再建一张表,关联来补齐缺失项。

再不然就是取得数据集后,在后台自己重组数据。

相对来说比一句SQL来解决,要麻烦。

yhdino | 园豆:701 (小虾三级) | 2014-06-21 20:31
其他回答(2)
0

分组查出来 然后统计计算咯

十年半山 | 园豆:206 (菜鸟二级) | 2014-06-17 23:44
0

导出excel用第三方pio。很强大!

Softlmis | 园豆:202 (菜鸟二级) | 2014-06-18 10:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册