当前位置: 代码迷 >> 报表 >> 急求个SQL语句!解决办法
  详细解决方案

急求个SQL语句!解决办法

热度:122   发布时间:2016-05-05 07:35:29.0
急急急!求个SQL语句!
小弟想求出每个工程师的安装产品次数,维修产品次数,验收产品次数。

所用表字段:服务类型(包括值:安装、维修、验收),安装工程师,维修工程师,验收工程师。
             安装工程师、维修工程师、验收工程师这三个字段在每条记录当中,只有其中一个字段有值。



小弟写了一个SQL语句结果为:


怎样实现这种效果:

------解决方案--------------------
楼主,图太小,没法看清楚,有另上图吧!
------解决方案--------------------
哪个能看清罗?

------解决方案--------------------
我眼神不好可能!
------解决方案--------------------
贴建表及插入记录的SQL,及要求结果出来看看
------解决方案--------------------
楼主,图太小,没法看清楚,有另上图吧!


贴建表及插入记录的SQL,及要求结果出来看看
------解决方案--------------------
看不清楚,重新发图!!
------解决方案--------------------
图片.楼主 
------解决方案--------------------
select 服务工程师,sum(安装),sum(维修),sum(验收) from 表 GROUP BY 工程师
------解决方案--------------------
引用:
select 服务工程师,sum(安装),sum(维修),sum(验收) from 表 GROUP BY 工程师

这样是错误的,楼主的需要是求次数。

建议把字段值=0的update为null,再count(),   count()会计算0,但不计算null

------解决方案--------------------
引用:
select 服务工程师,sum(安装),sum(维修),sum(验收) from 表 GROUP BY 工程师


你这个不对了
这个只是求行数
如果栏位里面有数值 它也只是代表一行
报表不能这么做
suM()...group by原理是对的 
------解决方案--------------------
引用:
引用:
select 服务工程师,sum(安装),sum(维修),sum(验收) from 表 GROUP BY 工程师


你这个不对了
这个只是求行数
如果栏位里面有数值 它也只是代表一行
报表不能这么做
suM()...group by原理是对的


看楼主贴出来的数据,不像是用group by  他好像只是提取每个人的第一条记录的
如果是那样的话,就很简单了
------解决方案--------------------
好像没啥规律,lz给规律呀。
row_number() over()
------解决方案--------------------
我自己建了一个table,包含了四个字段type,install,maintan,examine,经过sql处理后,生成四个字段person,install1,maintan1,examine1分别代表每个工人做的安装,维修,检查的次数
select Temp.person,count(Temp.install) as install1,count(Temp.maintan) as maintan1, count(Temp.examine) examine1 from
(select case when install is not Null then install 
       when maintan is not Null then maintan
       when examine is not Null then examine end person,type,install,maintan,examine
from t_service) Temp  group by person

------解决方案--------------------

--楼主的表述不清楚呀。。。
create table temp(
id int auto_increment primary key,
type varchar(10),
install_man varchar(10),
check_man varchar(10),
fix_man varchar(10)
)
insert into temp(type,install_man,check_man,fix_man) values('fix',null,null,'zhangsan');
insert into temp(type,install_man,check_man,fix_man) values('install','wangwu',null,null);
insert into temp(type,install_man,check_man,fix_man) values('check',null,'zhangsan',null);
insert into temp(type,install_man,check_man,fix_man) values('install','lisi',null,null);
原始表:
+----+---------+-------------+-----------+----------+

------解决方案--------------------
 id 
------解决方案--------------------
 type    
------解决方案--------------------
 install_man 
------解决方案--------------------
 check_man 
------解决方案--------------------
 fix_man  
------解决方案--------------------

+----+---------+-------------+-----------+----------+

------解决方案--------------------
  1 
------解决方案--------------------
 fix     
------解决方案--------------------
 NULL        
------解决方案--------------------
 NULL      
------解决方案--------------------
 zhangsan 
------解决方案--------------------


------解决方案--------------------
  2 
------解决方案--------------------
 install 
------解决方案--------------------
 wangwu      
------解决方案--------------------
 NULL      
------解决方案--------------------
 NULL     
------解决方案--------------------


------解决方案--------------------
  3 
------解决方案--------------------
 check   
------解决方案--------------------
  相关解决方案