数据库: mysql 表名: r_mstr
字段: r_date, r_emp, r_time, r_det_id日期 员工ID 出勤时间 明细表ID
2012/11/01 1101 6.25 6
2012/11/01 1102 6.25 7
2012/11/01 1103 6.25 8
2012/11/01 1104 6.25 9
2012/11/02 1101 6.25 10
2012/10/22 1101 8 11
2012/10/05 1101 8 12
2012/09/02 1101 8 13
2012/11/01 1101 6.25 14
2012/11/02 2101 6 15
2012/11/02 2101 6 16
2012/11/02 2101 6 17
2012/12/02 2102 7 18
2012/10/02 2101 5.5 19
2012/11/02 2101 6 20
2012/10/02 2102 5.5 21
2012/11/02 1201 6.25 22
2012/11/02 1202 8 23
2012/11/02 1102 6.25 24
2012/11/02 2201 6 25
2012/11/02 2203 6 26
2012/11/02 2203 6 27希望select出的结果是下面的样子
(将同一员工同一日期的重复出勤时间设为0,记录数不能少,也不能多!)日期 员工ID 出勤时间 明细表ID
2012/11/01 1101 6.25 6
2012/11/01 1102 6.25 7
2012/11/01 1103 6.25 8
2012/11/01 1104 6.25 9
2012/11/02 1101 6.25 10
2012/10/22 1101 8 11
2012/10/05 1101 8 12
2012/09/02 1101 8 13
2012/11/01 1101 0 14
2012/11/02 2101 6 15
2012/11/02 2101 0 16
2012/11/02 2101 0 17
2012/12/02 2102 7 18
2012/10/02 2101 5.5 19
2012/11/02 2101 0 20
2012/10/02 2102 5.5 21
2012/11/02 1201 6.25 22
2012/11/02 1202 8 23
2012/11/02 1102 6.25 24
2012/11/02 2201 6 25
2012/11/02 2203 6 26
2012/11/02 2203 0 27(刚才另一贴同样问题已结贴,确认太快了,答案不准确,select结果有冗余记录)
字段: r_date, r_emp, r_time, r_det_id日期 员工ID 出勤时间 明细表ID
2012/11/01 1101 6.25 6
2012/11/01 1102 6.25 7
2012/11/01 1103 6.25 8
2012/11/01 1104 6.25 9
2012/11/02 1101 6.25 10
2012/10/22 1101 8 11
2012/10/05 1101 8 12
2012/09/02 1101 8 13
2012/11/01 1101 6.25 14
2012/11/02 2101 6 15
2012/11/02 2101 6 16
2012/11/02 2101 6 17
2012/12/02 2102 7 18
2012/10/02 2101 5.5 19
2012/11/02 2101 6 20
2012/10/02 2102 5.5 21
2012/11/02 1201 6.25 22
2012/11/02 1202 8 23
2012/11/02 1102 6.25 24
2012/11/02 2201 6 25
2012/11/02 2203 6 26
2012/11/02 2203 6 27希望select出的结果是下面的样子
(将同一员工同一日期的重复出勤时间设为0,记录数不能少,也不能多!)日期 员工ID 出勤时间 明细表ID
2012/11/01 1101 6.25 6
2012/11/01 1102 6.25 7
2012/11/01 1103 6.25 8
2012/11/01 1104 6.25 9
2012/11/02 1101 6.25 10
2012/10/22 1101 8 11
2012/10/05 1101 8 12
2012/09/02 1101 8 13
2012/11/01 1101 0 14
2012/11/02 2101 6 15
2012/11/02 2101 0 16
2012/11/02 2101 0 17
2012/12/02 2102 7 18
2012/10/02 2101 5.5 19
2012/11/02 2101 0 20
2012/10/02 2102 5.5 21
2012/11/02 1201 6.25 22
2012/11/02 1202 8 23
2012/11/02 1102 6.25 24
2012/11/02 2201 6 25
2012/11/02 2203 6 26
2012/11/02 2203 0 27(刚才另一贴同样问题已结贴,确认太快了,答案不准确,select结果有冗余记录)
SELECT DISTINCT a.`日期`,a.`员工id`,IF(b.`出勤时间` IS NULL,a.`出勤时间`,0),a.`明细表ID`
FROM ttt a LEFT JOIN ttt b ON a.`员工id`=b.`员工id` AND a.`日期`=b.`日期` AND a.`明细表ID`>b.`明细表ID`
SELECT *,IF(EXISTS (SELECT 1 FROM ttt WHERE
a.`员工id`=`员工id` AND a.`日期`=`日期` AND a.`明细表ID`>`明细表ID`
),0,出勤时间) AS ss
FROM ttt a
可以再帮我写一个汇总sql么
还是这个表,想得到按月按人汇总的出勤总时间
select date_format(日期,'%Y%m'),员工ID, sum(出勤时间) from ttt group by date_format(日期,'%Y%m')
(SELECT *,IF(EXISTS (SELECT 1 FROM ttt WHERE
a.`员工id`=`员工id` AND a.`日期`=`日期` AND a.`明细表ID`>`明细表ID`
),0,出勤时间) AS ss
FROM ttt a)ttt
GROUP BY DATE_FORMAT(日期,'%Y%m')
(SELECT *,IF(EXISTS (SELECT 1 FROM ttt WHERE
a.`员工id`=`员工id` AND a.`日期`=`日期` AND a.`明细表ID`>`明细表ID`
),0,出勤时间) AS ss
FROM ttt a)ttt
GROUP BY 员工ID,DATE_FORMAT(日期,'%Y%m');orSELECT DATE_FORMAT(日期,'%Y%m'),员工ID,
SUM(IF(EXISTS (SELECT 1 FROM ttt WHERE
a.`员工id`=`员工id` AND a.`日期`=`日期` AND a.`明细表ID`>`明细表ID`
),0,出勤时间)) AS ss FROM ttt a GROUP BY 员工ID,DATE_FORMAT(日期,'%Y%m');