Foxtable(狐表)用户栏目专家坐堂 → [求助]查询表的问题。


  共有2615人关注过本帖树形打印复制链接

主题:[求助]查询表的问题。

帅哥哟,离线,有人找我吗?
有点甜
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/2 17:18:00 [显示全部帖子]

 

首先处理分配表,把所有负责人弄到一列去,如

 

select 一级负责人 as 姓名, '一级' as 等级, 当月产量 from {项目分配表} union all

select 二级负责人 as 姓名, '二级' as 等级, 当月产量 from {项目分配表}

 

上面语句用sql1代替。连接两个表得到数据

 

select b.姓名, iif(等级='一级',一级奖金*当月产量,iif(等级='二级',二级奖金*当月产量,0)) as 奖金 from {人员信息表} a inner join (sql1) b on a.姓名=b.姓名

 

上面语句用sql2代替。然后对sql2分组统计

 

select 姓名, sum(奖金) as 总奖金 from (sql2) group by 姓名

[此贴子已经被作者于2018/2/2 17:24:59编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/2 17:26:00 [显示全部帖子]

全部sql语句

 

select 姓名, sum(奖金) as 总奖金 from (select a.姓名, iif(等级='一级',一级奖金*当月产量,iif(等级='二级',二级奖金*当月产量,0)) as 奖金 from {人员信息表} a inner join (select 一级负责人 as 姓名, '一级' as 等级, 当月产量 from {项目分配表} union all
select 二级负责人 as 姓名, '二级' as 等级, 当月产量 from {项目分配表}) b on a.姓名=b.姓名) group by 姓名

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/4 20:23:00 [显示全部帖子]

如果sqlserver数据库,iif要改一下,如

 

select 姓名, sum(奖金) as 总奖金 from (select a.姓名, case when 等级='一级' then 一级奖金*当月产量 case when 等级='二级' then 二级奖金*当月产量 else 0 end as 奖金 from {人员信息表} a inner join (select 一级负责人 as 姓名, '一级' as 等级, 当月产量 from {项目分配表} union all
select 二级负责人 as 姓名, '二级' as 等级, 当月产量 from {项目分配表}) b on a.姓名=b.姓名) as c group by 姓名


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/4 23:01:00 [显示全部帖子]

select 姓名, sum(奖金) as 总奖金 from (select a.姓名, case when 等级='一级' then 一级奖金*当月产量 when 等级='二级' then 二级奖金*当月产量 else 0 end as 奖金 from {人员信息表} as a inner join (select 一级负责人 as 姓名, '一级' as 等级, 当月产量 from {项目分配表} union all
select 二级负责人 as 姓名, '二级' as 等级, 当月产量 from {项目分配表}) as b on a.姓名=b.姓名) as c group by 姓名


 回到顶部