select 维修工,count(产品) as 工作量 from 你的表 group by 维修工
解决方案 »
- delphi怎么读取tif文件,其中tif里面含有多通道,在photoshop里面可以看到
- 一个时间格式的问题
- ado+access的数据库连接问题.
- 哪位用过DBGRIDEh3.0的兄弟请帮忙.
- 请教高手:如何根据已知IP地址查询局域网中对应网卡的MAC地址
- 急急急急!!!!!!!!
- ★★★ 急聘Delphi程序员 ★★★
- 启动DELPHI时提示错误:"Can`t load package D:\controls5\BPL\dclrx5.bpl.找不到运行此应用程序所需的某个库文件。"
- 急急急,我现在就想知道答案!
- 如何编程实现“取得 CPU、系统、室内 的温度” ?
- 关于打印的问题!up有分!!!!!!!!!
- 我要广播消息(LAN)!
from <TableName>
group by 维修工
产品 维修工 安装工
科龙空调 李明 毛宁
春兰1匹 刘德华 周星驰
格力1.5匹 李明 周星驰
春兰2匹 郭富城 董建华我通过Sql语句统计维修工的工作量,结果如下表
员工 维修量 安装量
李明 2 0
刘德华 1 0
郭富城 1 0
周星驰 0 2
毛宁 0 1
董建华 0 1
如何实现?(SQLServer2000)
sql 如下:
select a.员工,维修量=(select count(b.维修工) from 你的表 b where b.维修工=a.员工),安装量=(select count(b.安装工) from 你的表 b where b.安装工=a.员工) form 员工表 a
我不想把所有员工都统计出来,只是想把那张表中涉及到员工统计,因为如果有多个部门,我不想把所有部门的员工都统计,例如统计财务部员工的安装维修量是没有意义的.
另外,如果我使用临时表,该怎样创建.
谢谢!
full join
(select 安装工 as 员工,count(*) as 安装量 from table group by 安装工 ) b
on a.员工=b.员工
from (select 维修工,count(*) as 维修量
from <TableName>
group by 维修工) as T1,
(select 安装工,count(*) as 安装量
from <TableName>
group by 安装工) as T2
where T1.维修工=2.安装工
--CREATE TABLE Test(
-- 产品 varchar(20),
-- 维修工 varchar(10),
-- 安装工 varchar(10)
--);
--go
--INSERT INTO Test (产品,维修工,安装工) VALUES ('科龙空调','李明','毛宁');
--INSERT INTO Test (产品,维修工,安装工) VALUES ('春兰1匹','刘德华','周星驰');
--INSERT INTO Test (产品,维修工,安装工) VALUES ('格力1.5匹','李明','周星驰');
--INSERT INTO Test (产品,维修工,安装工) VALUES ('春兰2匹','郭富城','董建华');
select 维修工 as 员工,count(*) as 维修量,0 as 安装量 from Test group by 维修工
union
select 安装工 as 员工,0 as 维修量,count(*) as 安装量 from Test group by 安装工
你的代码的后三行使我受到启发,基本实现了功能,谢谢你.
但是,你的代码没有考虑到这样一种因素,那就是,如果某位员工既有维修量,有做了安装工作,那结果应该是:
员工 维修量 安装量
周星驰 1 2
而你的代码却不能计算出来,不过我还是非常感谢你的,请你帮我一下
(select 维修工 员工,count(维修量) 维修量, 安装量 =0 from <table>
group by 维修工
union
select 安装工 员工, 维修量 = 0, count(安装工) 安装量 from 页面表 group by 安装工
) a
group by 员工
select distinct tbl.维修工,tbl.安装工,q1.count as 工作量,q2.count as 安装量
from tblname tbl,(select 维修工,count(*) count from tblname group by 维修工)q1,(select 安装工,count(*) count from tblname group by 安装工)q2
/*******************************************
调试一下,相信结果会令你满意的。
(select 维修工 员工,count(维修量) 维修量, 安装量 =0 from <table>
group by 维修工
union
select 安装工 员工, 维修量 = 0, count(安装工) 安装量 from <table>
group by 安装工
) a
group by 员工
你说的那种方法,我以前在本地数据库中使用过,但现在我在远程数据库中,我准备尽量使用Sql语句。顺便也学习一下
你的语句我运行了,有错误:列名 '维修量' 无效。
(select 维修工 员工,count(维修工) 维修量, 安装量 =0 from <table>
group by 维修工
union
select 安装工 员工, 维修量 = 0, count(安装工) 安装量 from <table>
group by 安装工
) a
group by 员工
这下对了!是里面的一个东西写错了!调试通过!
你的代码我已经调试过了,完全符合要求,真是高手啊.
不过我想问你,那个到数第二行的 a 是什么意思, 谢谢 最后也谢谢所有参与这个问题的前辈们,非常感谢.
临时表(不是真正意义上MSSQL定义的临时表)代号,供你简化脚本代码。
a 在这里不用也可以。