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


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

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

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


加好友 发短信
等级:六尾狐 帖子:1303 积分:10518 威望:0 精华:1 注册:2018/1/20 12:40:00
[求助]查询表的问题。  发帖心情 Post By:2018/2/2 16:39:00 [只看该作者]

通过这两个表格希望使用查询表统计出每个人的当月奖金。

 

格式:

 

姓名                        总奖金

王五      =(一级产量*一级奖金+二级产量*二级奖金)

赵六

。。

。。

 

现在矛盾的地方是,一级产量和二级产量里面会涉及到同一个人。。就有点不知道怎么设置了。

 可能不是用查询表。其他统计表的方式可以怎么实现呢


图片点击可在新窗口打开查看此主题相关图片如下:1.bmp
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.bmp
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/2/2 16:40:51编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1303 积分:10518 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2018/2/2 17:03:00 [只看该作者]

我把文件上传下

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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 姓名

 

 


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


加好友 发短信
等级:六尾狐 帖子:1303 积分:10518 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2018/2/2 17:45:00 [只看该作者]

多谢老大

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


加好友 发短信
等级:六尾狐 帖子:1303 积分:10518 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2018/2/4 20:19:00 [只看该作者]

这个如果用到外部数据的时候,需要改语法吗。为啥内部数据表没问题,外部数据的时候 提示 关键字 'group' 附近有语法错误。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | 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 姓名


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


加好友 发短信
等级:六尾狐 帖子:1303 积分:10518 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2018/2/4 20:41:00 [只看该作者]

以下是引用有点甜在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 姓名

“b”附近有语法错误。
关键字 'case' 附近有语法错误。

报了另外的错误


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


加好友 发短信
等级:六尾狐 帖子:1303 积分:10518 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2018/2/4 20:50:00 [只看该作者]

 哦好了。多了个case

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 姓名


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | 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 姓名


 回到顶部