表 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
3 回答
MM们
TA贡献1886条经验 获得超2个赞
一共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.北京.姓名
- 3 回答
- 0 关注
- 505 浏览
添加回答
举报
0/150
提交
取消