以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]查询表的问题。 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=114306) |
||||
-- 作者:81538475 -- 发布时间:2018/2/2 16:39:00 -- [求助]查询表的问题。 通过这两个表格希望使用查询表统计出每个人的当月奖金。
格式:
姓名 总奖金 王五 =(一级产量*一级奖金+二级产量*二级奖金) 赵六 。。 。。
现在矛盾的地方是,一级产量和二级产量里面会涉及到同一个人。。就有点不知道怎么设置了。 可能不是用查询表。其他统计表的方式可以怎么实现呢 此主题相关图片如下:1.bmp 此主题相关图片如下:2.bmp [此贴子已经被作者于2018/2/2 16:40:51编辑过]
|
||||
-- 作者:81538475 -- 发布时间:2018/2/2 17:03:00 -- 我把文件上传下
|
||||
-- 作者:有点甜 -- 发布时间: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编辑过]
|
||||
-- 作者:有点甜 -- 发布时间: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
|
||||
-- 作者:81538475 -- 发布时间:2018/2/2 17:45:00 -- 多谢老大 |
||||
-- 作者:81538475 -- 发布时间:2018/2/4 20:19:00 -- 这个如果用到外部数据的时候,需要改语法吗。为啥内部数据表没问题,外部数据的时候 提示 关键字 \'group\' 附近有语法错误。 |
||||
-- 作者:有点甜 -- 发布时间: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 |
||||
-- 作者:81538475 -- 发布时间: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 “b”附近有语法错误。 报了另外的错误 |
||||
-- 作者:81538475 -- 发布时间: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 |
||||
-- 作者:有点甜 -- 发布时间: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 |