工序表:
编号 员工编号 计件工资 工作日期
1 1001 320 2006-7-1
2 1001 205 2006-7-2
3 1002 560 2006-7-3
4 1002 510 2006-7-4
零工表:
编号 员工编号 计时工资 工作日期
1 1001 120 2006-7-1
2 1004 205 2006-7-2
3 1005 560 2006-7-4
员工考勤表:
编号 员工编号 工时 加班 请假 旷工 工作日期
1 1001 4 0 0 0 2006-7-1
2 1001 4 0 0 0 2006-7-1
3 1001 8 0 0 0 2006-7-2
4 1004 8 0 0 0 2006-7-2
5 1002 8 0 0 0 2006-7-3
4 1002 8 0 0 0 2006-7-4
4 1005 8 0 0 0 2006-7-4
员工奖罚表:
编号 员工编号 奖励 罚款
1 1001 5 0
2 1002 0 -3
车间工资表:
编号 员工编号 工时 加班 请假 旷工 计件工资 计时工资 奖励 罚款 总工资
1 1001 16 0 0 0 525 120 5 0 650
2 1002 16 0 0 0 1070 0 0 -3 1067
3 1004 8 0 0 0 0 205 0 0 205
3 1005 8 0 0 0 0 560 0 0 560
工序表的计件工资汇总+零工表的计时工资汇总+员工考勤表的考勤数据汇总+员工奖罚表的奖罚数据汇总
生成为车间工资表。我是这样写的,但结果不正确:
INSERT INTO 一车间工资表
(员工编号, 工时, 加班, 请假, 旷工, 放假, 计件工资, 计时工资,补助,奖金,罚款,保险费)
SELECT DISTINCT 员工编号,
(SELECT SUM(工作时间)
FROM 员工考勤表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 工时,
(SELECT SUM(加班)
FROM 员工考勤表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 加班,
(SELECT SUM(请假)
FROM 员工考勤表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 请假,
(SELECT SUM(旷工)
FROM 员工考勤表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 旷工,
(SELECT SUM(放假)
FROM 员工考勤表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 放假,
(SELECT SUM(当日工资)
FROM 工序表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 计件工资,
(SELECT SUM(应得工资)
FROM 零工表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 计时工资,
(SELECT SUM(当日补助)
FROM 工序表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 补助,
(SELECT SUM(奖励)
FROM 员工奖罚表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 奖金,
(SELECT SUM(罚款)
FROM 员工奖罚表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 罚款,
(SELECT 个人承担金额 FROM 保险表,保险参数表 WHERE员工编号 = y.员工编号 and保险表.保险编号=保险参数表.编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 保险费用
FROM 员工考勤表 y
大家一块帮忙看一下吧。
编号 员工编号 计件工资 工作日期
1 1001 320 2006-7-1
2 1001 205 2006-7-2
3 1002 560 2006-7-3
4 1002 510 2006-7-4
零工表:
编号 员工编号 计时工资 工作日期
1 1001 120 2006-7-1
2 1004 205 2006-7-2
3 1005 560 2006-7-4
员工考勤表:
编号 员工编号 工时 加班 请假 旷工 工作日期
1 1001 4 0 0 0 2006-7-1
2 1001 4 0 0 0 2006-7-1
3 1001 8 0 0 0 2006-7-2
4 1004 8 0 0 0 2006-7-2
5 1002 8 0 0 0 2006-7-3
4 1002 8 0 0 0 2006-7-4
4 1005 8 0 0 0 2006-7-4
员工奖罚表:
编号 员工编号 奖励 罚款
1 1001 5 0
2 1002 0 -3
车间工资表:
编号 员工编号 工时 加班 请假 旷工 计件工资 计时工资 奖励 罚款 总工资
1 1001 16 0 0 0 525 120 5 0 650
2 1002 16 0 0 0 1070 0 0 -3 1067
3 1004 8 0 0 0 0 205 0 0 205
3 1005 8 0 0 0 0 560 0 0 560
工序表的计件工资汇总+零工表的计时工资汇总+员工考勤表的考勤数据汇总+员工奖罚表的奖罚数据汇总
生成为车间工资表。我是这样写的,但结果不正确:
INSERT INTO 一车间工资表
(员工编号, 工时, 加班, 请假, 旷工, 放假, 计件工资, 计时工资,补助,奖金,罚款,保险费)
SELECT DISTINCT 员工编号,
(SELECT SUM(工作时间)
FROM 员工考勤表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 工时,
(SELECT SUM(加班)
FROM 员工考勤表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 加班,
(SELECT SUM(请假)
FROM 员工考勤表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 请假,
(SELECT SUM(旷工)
FROM 员工考勤表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 旷工,
(SELECT SUM(放假)
FROM 员工考勤表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 放假,
(SELECT SUM(当日工资)
FROM 工序表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 计件工资,
(SELECT SUM(应得工资)
FROM 零工表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 计时工资,
(SELECT SUM(当日补助)
FROM 工序表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 补助,
(SELECT SUM(奖励)
FROM 员工奖罚表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 奖金,
(SELECT SUM(罚款)
FROM 员工奖罚表
WHERE 员工编号 = y.员工编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 罚款,
(SELECT 个人承担金额 FROM 保险表,保险参数表 WHERE员工编号 = y.员工编号 and保险表.保险编号=保险参数表.编号 AND 工作日期 BETWEEN '2006-7-1' AND
'2006-7-31') AS 保险费用
FROM 员工考勤表 y
大家一块帮忙看一下吧。
从员工档案中取
因为考勤表中员工的的编号有多个
可能会导致数据重复