首页 新闻 会员 周边

求sql 统计查询

0
[已解决问题] 解决于 2010-05-27 12:58

表 a: 员工销售统计表

部门

 

工号

 

姓名

 

负责地区

 

销售金额

 

部门一

 

001

 

员工一

 

北京

 

2

 

部门一

 

002

 

员工二

 

上海

 

3

 

部门一

 

003

 

员工三

 

上海

 

4

 

部门一

 

003

 

员工三

 

上海

 

5

 

部门二

 

004

 

员工四

 

北京

 

6

 

部门二

 

004

 

员工四

 

北京

 

7

 

部门二

 

005

 

员工五

 

上海

 

8

 

  

 

a 员工销售统计表

部门

 

工号

 

姓名

 

负责地区

 

销售金额

 

部门一

 

001

 

员工一

 

北京

 

2

 

部门一

 

002

 

员工二

 

上海

 

3

 

部门一

 

003

 

员工三

 

上海

 

4

 

部门一

 

003

 

员工三

 

上海

 

5

 

部门二

 

004

 

员工四

 

北京

 

6

 

部门二

 

004

 

员工四

 

北京

 

7

 

部门二

 

005

 

员工五

 

上海

 

8

 

 

 

按部门统计结果:

 

/*************************************************************/

工号

 

姓名

 

上海

 

北京

 

出现数量1

 

金额1

 

出现数量2

 

金额2

 

001

 

员工一

 

0

 

0

 

1

 

2

 

002

 

员工二

 

1

 

3

 

0

 

0

 

003

 

员工三

 

2

 

9

 

0

 

0

 

004

 

员工四

 

0

 

0

 

2

 

13

 

005

 

员工五

 

1

 

8

 

0

 

0

 

 /***************************************************************/

 

我把问题再简化一下,目前已经可以实现下面的结果,但是上面的结果如何实现?

 

SELECT 工号 ,姓名 ,COUNT(姓名) AS 数量1 ,

 

sum(金额) as 金额1 ,Department FROM [表a]

 

where 地区=’上海’

 

 GROUP BY 工号 ,姓名

工号

 

姓名

 

上海

 

出现数量1

 

金额1

 

001

 

员工一

 

0

 

0

 

002

 

员工二

 

1

 

3

 

003

 

员工三

 

2

 

9

 

004

 

员工四

 

0

 

0

 

005

 

员工五

 

1

 

8

 

SELECT 工号 ,姓名 ,COUNT(姓名) AS 数量2 ,

 

sum(金额) as 金额2 ,Department FROM [表a]

 

where 地区=’北京’

 

 GROUP BY 工号 ,姓名

工号

 

姓名

 

北京

 

出现数量2

 

金额2

 

001

 

员工一

 

1

 

2

 

002

 

员工二

 

0

 

0

 

003

 

员工三

 

0

 

0

 

004

 

员工四

 

2

 

13

 

005

 

员工五

 

0

 

0

 

张晓飞2008的主页 张晓飞2008 | 初学一级 | 园豆:0
提问于:2010-05-23 13:33
< >
分享
最佳答案
0

一共4个查询语句
select * from (select 工号,姓名,count(case 负责地区 when '上海' then 姓名 end) as 上海出现数量,isNull(sum(case 负责地区 when '上海' then 销售金额 end),0) as 上海金额 from 员工销售统计表 group by 工号,姓名
) as 上海

select * from (select 工号,姓名,count(case 负责地区 when '北京' then 姓名 end) as 北京出现数量,isNull(sum(case 负责地区 when '北京' then 销售金额 end),0) as 北京金额 from 员工销售统计表 group by 工号,姓名
) as 北京

select * from (SELECT DISTINCT 姓名 AS 姓名 FROM  员工销售统计表) AS 姓名


SELECT     dbo.上海.工号, dbo.姓名.姓名, dbo.北京.北京出现数量, dbo.北京.北京金额, dbo.上海.上海出现数量, dbo.上海.上海金额
FROM         dbo.姓名 INNER JOIN
                      dbo.上海 ON dbo.姓名.姓名 = dbo.上海.姓名 INNER JOIN
                      dbo.北京 ON dbo.姓名.姓名 = dbo.北京.姓名

孙志强 | 菜鸟二级 |园豆:225 | 2010-05-24 11:46
你给的这个答案共包含4个查询语句,我这边需要实现把结果绑定到一个datagrid控件中,似乎不能把这4个分离的sql查询出来的结果同时绑定到一个控件中吧。
张晓飞2008 | 园豆:0 (初学一级) | 2010-05-25 08:31
你没看?上面3个都是第4个的子语句好吧 你组合也行 写视图也行。。 这样写是为了你看清楚 是怎么出来的结果
孙志强 | 园豆:225 (菜鸟二级) | 2010-05-26 15:45
其他回答(1)
0

先不管效率,可多写几个子查询即可

steven hu | 园豆:542 (小虾三级) | 2010-05-23 19:12
怎么把子查询拼接在一起呢?
支持(0) 反对(0) 张晓飞2008 | 园豆:0 (初学一级) | 2010-05-24 08:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册