有这样一个数据表 :t_DeviceErrors(设备故障);字段:f_deviceId,f_style;(设备编号,故障类型)数据:
f_deviceId f_style
0000000001 01
0000000001 02
0000000002 01
0000000003 02
生成的交叉数据报表为: f_deviceId sum_Errors sum_error_01 sum_error_02
0000000001 2 1 1
0000000002 1 1 0
0000000003 1 0 1
f_deviceId f_style
0000000001 01
0000000001 02
0000000002 01
0000000003 02
生成的交叉数据报表为: f_deviceId sum_Errors sum_error_01 sum_error_02
0000000001 2 1 1
0000000002 1 1 0
0000000003 1 0 1
解决方案 »
- DELPHI如何给动态PANEL上颜色
- 有谁安装过imageen3 我安装时提示File not found: 'jdapimin.obj',如何解决?
- 帮忙看看!过程Test会依次有什么提示信息??
- 关于winexec的问题,请大家帮助!!!!!!!
- QReport的哪个控件能够显示过长字符串的时候自动折行?QRMemo不行啊!!
- 请问大家哪里能找到object pascal的中文文档,谢谢!
- Indy的怪问题,高分求解
- windows里面的图标资源是在哪些文件中?
- 关于InstallShield打包的几个问题,高分求解
- 如何更改选中DBGrid记录的高亮颜色? >>>>
- 怎样使datagrid当前行整行带颜色,在线给分。。。。
- 刚才公司突然断电,再打开电脑突然发现我穿得裤衩多了一条,哈哈,庆祝!!!散分!!!
group by f_deviceId
共四种,并且这里所用的数据库为 Oracle, 我试用过你上面所列示的方法,好像是没有用的;甚是感激!
其实问题一点不糟糕的,而且很简单。你只要先GROUP BY f_style,
然后利用循环生成SQL语句,你是ORCALE,我写的是MSSQL,
你完全可以进行修改。
set @sql = 'select f_deviceId,sum(f_style) sum_Errors'
select @sql = @sql + ',sum(casef_style when '''+cast(f_style as varchar(10))+''' then 1 else 0 end) [sum_error_'+cast(f_style as varchar(10))+']' from (select distinct f_style from t_DeviceErrors) as a
select @sql = @sql+' from t_DeviceErrors group by f_deviceId'
exec(@sql)
go
sum(decode(f_style,'01',1,0)) sum_error_01,sum(decode(f_style,'02',1,0)) sum_error_02,
sum(decode(f_style,'03',1,0)) sum_error_03,sum(decode(f_style,'04',1,0)) sum_error_04
group by f_deviceId
U R Riht!