[英]Combining 2 Select queries using dates and then Joining 2 Tables
我曾尝试加入我的查询,但在周日时间遇到了麻烦,
我有一个非常基本且直接的联接查询,可以计算员工的所有工作时间,正常时间和加班时间,并且该查询可以完美地运行,但是当我想参加星期日时间时,一切都变得很麻烦。
完整查询,无星期日时间:-
SELECT
`empl_attendance`.`employee_id`,
`employee`.`employee_surname`,
`employee`.`employee_first_name`,
`employee`.`employee_second_name`,
FORMAT((IF(SUM...some basic maths...)),1) AS nt,
FORMAT((...some basic maths...),1) AS ot,
FORMAT((...some basic maths...),1) AS total
FROM
`empl_attendance`
WHERE
(`empl_attendance_date` BETWEEN '$start_date' AND '$end_date')
INNER JOIN
`employee`
ON `empl_attendance`.`employee_id`=`employee`.`employee_id`
GROUP BY `employee_id`
但是我需要结合以下查询,该查询基本上可以计算每位员工的总星期日工作时间。 该查询本身可以正常工作,我只是在努力将两个查询组合在一起:
SELECT SUM(`empl_attendance_total`) AS sundays
FROM `empl_attendance`
WHERE
(`empl_attendance_date` BETWEEN '$start_date' AND '$end_date')
AND
WEEKDAY(`empl_attendance_date`) > 5
GROUP BY `employee_id`
谢谢
周杰伦
您可以使用case语句执行此操作:
SELECT ea.`employee_id`, e.`employee_surname`, e.`employee_first_name`, e.`employee_second_name`,
FORMAT((IF(SUM...some basic maths...)),1) AS nt,
FORMAT((...some basic maths...),1) AS ot,
FORMAT((...some basic maths...),1) AS total,
sum(case when weekday(ea.empl_attendance_date) > 5 then ea.empl_attendance_total end) as SundayTotal
FROM empl_attendance ea join
employee e
ON ea.`employee_id = e.employee_id
WHERE ea.empl_attendance_date BETWEEN '$start_date' AND '$end_date'
GROUP BY `employee_id`
我假设以FORMAT开头的行正在寻找非星期日日期,或者如果需要的话,至少要包括它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.