当前位置: 代码迷 >> 报表 >> ,水晶报表之交叉表 急
  详细解决方案

,水晶报表之交叉表 急

热度:175   发布时间:2016-05-05 07:44:21.0
求助,水晶报表之交叉表 急~~~
要求

哥哥姐姐帮帮忙啊。
上面是要实现的报表,难点:行列交叉要求显示平均数,而总计要求显示平均数的和,
目前看到报表的功能是,显示平均数,总计也是显示的平均数。

结果:


这关系到我在公司的生存呀,请求各位帮助。



------解决思路----------------------
水晶报表没有用过
用SQL语句生成交叉表不行?
------解决思路----------------------
你的数据是什么,贴表结构及记录出来看看
------解决思路----------------------
参考
http://bbs.csdn.net/topics/310045927
中我的回答
------解决思路----------------------
总计是怎样得出的142.2、5.33
后台数据库是什么,如果支持ROLLUP

将你上述SQL语句存为查询比如VIEW1

SELECT FRM_NAME,SUM(CASE WHEN SVC_NAME='COMMON' THEN IRDAY ELSE 0 END),
SUM(CASE WHEN SVC_NAME='TAM' THEN IRDAY ELSE 0 END),
SUM(CASE WHEN SVC_NAME='SOCI' THEN IRDAY ELSE 0 END),SUM(IRDAY) AS 总计
FROM VIEW1 GROUP BY FRM_NAME WITH ROLLUP
------解决思路----------------------
SELECT FRM_NAME,SUM(CASE WHEN SVC_NAME='COMMON' THEN IRDAY ELSE 0 END),
 SUM(CASE WHEN SVC_NAME='TAM' THEN IRDAY ELSE 0 END),
 SUM(CASE WHEN SVC_NAME='SOCI' THEN IRDAY ELSE 0 END),SUM(IRDAY) AS 总计
 FROM 
( SELECT f.frm_name,c.svc_name,ir.rpt_rcv_datetime ,r.rqst_datetime,
 FLOOR(ir.rpt_rcv_datetime- r.rqst_datetime) AS irday 
 FROM IVG_RQST r INNER JOIN IVG_FRM f ON r.IVG_FRM_ID = f.IVG_FRM_ID
 INNER JOIN CIM_DATA.clc_encntr e ON r.clc_encntr_id = e.clc_encntr_id 
 INNER JOIN CIM_DATA.cod_svc c ON e.COD_SVC_ID = c.COD_SVC_ID INNER JOIN 
 IVG_RPT ir ON   r.IVG_RQST_ID = ir.IVG_RQST_ID  ) aa
 
  GROUP BY FRM_NAME
这样能否运行。最好到ORACLE运行,看看问题出在什么地方

SELECT FRM_NAME,SUM(CASE WHEN SVC_NAME='COMMON' THEN IRDAY ELSE 0 END),
 SUM(CASE WHEN SVC_NAME='TAM' THEN IRDAY ELSE 0 END),
 SUM(CASE WHEN SVC_NAME='SOCI' THEN IRDAY ELSE 0 END),SUM(IRDAY) AS 总计
 FROM 
( SELECT f.frm_name,c.svc_name,ir.rpt_rcv_datetime ,r.rqst_datetime,
 FLOOR(ir.rpt_rcv_datetime- r.rqst_datetime) AS irday 
 FROM IVG_RQST r INNER JOIN IVG_FRM f ON r.IVG_FRM_ID = f.IVG_FRM_ID
 INNER JOIN CIM_DATA.clc_encntr e ON r.clc_encntr_id = e.clc_encntr_id 
 INNER JOIN CIM_DATA.cod_svc c ON e.COD_SVC_ID = c.COD_SVC_ID INNER JOIN 
 IVG_RPT ir ON   r.IVG_RQST_ID = ir.IVG_RQST_ID  ) aa
 
  GROUP BY rollup(FRM_NAME); 
能否运行
------解决思路----------------------
可以指定


SELECT FRM_NAME,SUM(CASE WHEN SVC_NAME='COMMON' THEN IRDAY ELSE 0 END) as 你的名称,
  SUM(CASE WHEN SVC_NAME='TAM' THEN IRDAY ELSE 0 END) 
  相关解决方案