要求
哥哥姐姐帮帮忙啊。
上面是要实现的报表,难点:行列交叉要求显示平均数,而总计要求显示平均数的和,
目前看到报表的功能是,显示平均数,总计也是显示的平均数。
结果:
这关系到我在公司的生存呀,请求各位帮助。
------解决思路----------------------
水晶报表没有用过
用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)