猿问

求sql 统计查询

表 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

 

蝴蝶刀刀
浏览 506回答 3
3回答

MM们

一共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.北京.姓名

慕码人8056858

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

精慕HU

怎么把子查询拼接在一起呢?
随时随地看视频慕课网APP

相关分类

SQL Server
我要回答