おはよう! 私は、時間が存在するか、休暇か、休暇かを示す必要がある私のプロジェクトに取り組んでいます。従業員がいる場合、私は時間を数えます。休暇と休暇が支払われる場合、支払可能な総時間は彼らの勤務スケジュールです。MySQLケースステートメントダブル結果
Select `leave`.emp_id,
leave_request.date,
CASE WHEN leave.status_id = 4 AND leave_request.with_pay = 1 THEN
(
SELECT TIMESTAMPDIFF(HOUR, w_s.time_in, w_s.time_out)
FROM working_schedule w_s
JOIN employee_working_schedule ews ON w_s.id = ews.working_schedule_id
WHERE ews.employee_id = '01-0001'
)
WHEN leave.status_id = 4 AND leave_request.with_pay = 0 THEN '0'
END AS status
FROM `leave`
JOIN leave_request On `leave`.id = leave_request.`leave_id`
JOIN employee_logs AS e_l ON leave.emp_id = e_l.employee_id
WHERE `leave`.emp_id = '01-0001'
UNION
SELECT e.employee_code AS id,
CAST(e_l.time_in As date) day,
CASE WHEN e_l.time_in IS NOT NULL THEN TIMESTAMPDIFF(HOUR, e_l.time_in, e_l.time_out)
FROM employee e
LEFT JOIN employee_logs e_l ON e.employee_code = e_l.employee_id
LEFT JOIN employee_company e_c ON e.employee_code = e_c.employee_id
LEFT JOIN company c ON e_c.company_id = c.id
JOIN employee_working_schedule ews On e.employee_code = ews.employee_id
JOIN working_schedule w_s On ews.working_schedule_id = w_s.id
WHERE e.employee_code = '01-0001'
AND e_l.time_in BETWEEN '2017-09-01' AND '2017-09-28'
UNION
SELECT '01-0001',
CASE WHEN holiday.date BETWEEN '2017-09-01' AND '2017-09-28' THEN
(SELECT holiday.date) END AS date,
CASE WHEN holiday.date BETWEEN '2017-09-01' AND '2017-09-28' THEN
(
SELECT TIMESTAMPDIFF(HOUR, w_s.time_in, w_s.time_out)
FROM working_schedule w_s
JOIN employee_working_schedule ews ON w_s.id = ews.working_schedule_id
WHERE ews.employee_id = '01-0001'
)
END AS status
FROM holiday
だから、別の結果を追加するためにここに可能です。例えば(CASE e_l.time_inがNULLではないTHEN TIMESTAMPDIFF(HOUR、e_l.time_in、e_l.time_out)END hours_count AS)THEN
Present
END状態
なぜ、selectステートメントごとに別の列を追加しないのですか?たとえば、 ''Present' As Status'を追加する2番目のselectステートメント –
staement @VikiTheolorado –