+ -
当前位置:首页 → 问答吧 → access做的工资管理系统为什么在合计时会自动乘倍数?

access做的工资管理系统为什么在合计时会自动乘倍数?

时间:2010-12-22

来源:互联网

在“按工号合计查询”中为什么支款总额会是实际支款额乘以出勤次数?请高手解答,谢谢

附件

人事_2010-12-22.zip(28.61 KB)

2010-12-22 09:32, 下载次数: 4

作者: 53645111   发布时间: 2010-12-22

select 员工信息.员工号,姓名,iif(d.支款总额=0,null,d.支款总额),iif(d.考勤总额=0,null,d.考勤总额) from 员工信息 left join (select 员工号 ,sum(a) as 支款总额  ,sum(b) as 考勤总额 from (select 员工号 , 0 as a, sum(出勤天数) as b from 考勤记录 group  by 员工号 union all (select 员工号 , sum(支款金额) as a, 0 as b from 支款记录 group  by 员工号)) group by 员工号) as d on 员工信息.员工号=d.员工号
应该先汇总,
假如103,在考勤记录中有4条记录与员工信息表中员工号对应,从而导致与f支款额中有4条记录对应,sum()就相加了.
应先理解left join 的用法.

作者: detergent181   发布时间: 2010-12-22

可是我把你给的Sql语句放到Sql视图下却显示From子句错误,请高手指点,我是新手,最好能给附件…谢谢

作者: 53645111   发布时间: 2010-12-22

SELECT 员工信息.员工号, 姓名, iif(d.支款总额=0,null,d.支款总额) AS 支款总额, iif(d.考勤总额=0,null,d.考勤总额) AS 考勤总额
FROM 员工信息 LEFT JOIN [select 员工号 ,sum(a) as 支款总额  ,sum(b) as 考勤总额 from (select 员工号 , 0 as a, sum(出勤天数) as b from 考勤记录 group  by 员工号 union all (select 员工号 , sum(支款金额) as a, 0 as b from 支款记录 group  by 员工号)) group by 员工号]. AS d ON 员工信息.员工号=d.员工号;

附件

abc.rar(27.81 KB)

2010-12-22 11:59, 下载次数: 5

作者: detergent181   发布时间: 2010-12-22

谢谢你,可以用了

作者: 53645111   发布时间: 2010-12-22