考勤項目查詢sql,用於溫習,覺得可以的時候要刪掉

-- 班組列表查詢
SELECT
mtable.kq_classesteam_id,
mtable.kq_classesteam_name,
mtable.emp_number,
mtable.kq_classesteam_orderclass_type,
GROUP_CONCAT(mtable.kq_classes_name) classes_name
FROM
(
SELECT DISTINCT
ct.kq_classesteam_id,
ct.kq_classesteam_name,
te.emp_number,
ct.kq_classesteam_orderclass_type,
tc.kq_classes_id,
kqc.kq_classes_name
FROM
kq_classesteam ct
LEFT JOIN (
SELECT
kq_classesteam_id,
count(kq_teamempl_empid) emp_number
FROM
kq_teamempl kqt
WHERE
kqt.kq_teamempl_delflag = 0
AND kqt.kq_teamempl_comno = 123
GROUP BY
kq_classesteam_id
) te ON (
ct.kq_classesteam_id = te.kq_classesteam_id
AND ct.kq_classesteam_comno = 123
AND ct.kq_classesteam_delflag=0
AND ct.kq_classesteam_deldate IS NULL
)
LEFT JOIN kq_teamdateclass tc ON (
ct.kq_classesteam_id = tc.kq_classesteam_id
AND tc.kq_teamdateclass_delflag = 0
AND tc.kq_teamdateclass_comno=123
AND tc.kq_teamdateclass_deldate IS NULL
)
LEFT JOIN kq_classes kqc ON (
tc.kq_classes_id = kqc.kq_classes_id
AND kqc.kq_classes_comno=123
AND kqc.kq_classes_delflag=0
AND kqc.kq_classes_deldate is NULL
)
WHERE
ct.kq_classesteam_delflag = 0
AND ct.kq_classesteam_comno=123
AND ct.kq_classesteam_deldate IS NULL
) mtable
GROUP BY
mtable.kq_classesteam_id




-- 根據班組id查詢 
SELECT
ct.kq_classesteam_id,
ct.kq_classesteam_name,
te.te_empid,
te.emp_number,
ct.kq_classesteam_orderclass_type,
tc.kq_classes_id,
tc.kq_teamdateclass_date,
CASE tc.kq_teamdateclass_date WHEN '週一' THEN '1' WHEN '週二' THEN '2' WHEN '週三' THEN '3' WHEN '週四' THEN '4' WHEN '週五' THEN '5' WHEN '週六' THEN '6' WHEN '週日' then'7' ELSE 0 END shunxu, 
kqc.kq_classes_name,
kqat.timename
FROM
kq_classesteam ct
LEFT JOIN (
SELECT
kq_classesteam_id,
group_concat(kq_teamempl_empid) te_empid,
count(kq_teamempl_empid) emp_number
FROM
kq_teamempl kqt
WHERE
kqt.kq_teamempl_delflag = 0
AND kqt.kq_teamempl_deldate IS NULL
AND kqt.kq_teamempl_comno = 123
GROUP BY
kq_classesteam_id
) te ON (
ct.kq_classesteam_id = te.kq_classesteam_id
)
LEFT JOIN kq_teamdateclass tc ON (
ct.kq_classesteam_id = tc.kq_classesteam_id
AND tc.kq_teamdateclass_delflag = 0
AND tc.kq_teamdateclass_comno =123
AND tc.kq_teamdateclass_deldate IS NULL
)
LEFT JOIN kq_classes kqc ON (
tc.kq_classes_id = kqc.kq_classes_id
AND kqc.kq_classes_delflag = 0
AND kqc.kq_classes_deldate IS NULL
AND kqc.kq_classes_comno =123
)
LEFT JOIN (
SELECT
kq_classes_id,
group_concat(
concat_ws(
'~',
kq_attendancetime_checkin_time,
kq_attendancetime_checkout_time
)
) AS timename
FROM
kq_attendancetime kqa
WHERE
kqa.kq_attendancetime_comno =123
GROUP BY
kq_classes_id
) kqat ON (
kqc.kq_classes_id = kqat.kq_classes_id
)
WHERE
ct.kq_classesteam_delflag = 0
AND ct.kq_classesteam_deldate IS NULL
AND ct.kq_classesteam_comno = 123
AND ct.kq_classesteam_id = 2
ORDER BY

 shunxu



-- 人員列表
SELECT
kda.kq_dayAttendance_empid,
group_concat( ( CASE WHEN kda.kq_dayAttendance_time = '2017-04-03' THEN kda.kq_classes_name ELSE NULL END ) ) AS classname_1,
group_concat( ( CASE WHEN kda.kq_dayAttendance_time = '2017-04-04' THEN kda.kq_classes_name ELSE NULL END ) ) AS classname_2,
group_concat( ( CASE WHEN kda.kq_dayAttendance_time = '2017-04-05' THEN kda.kq_classes_name ELSE NULL END ) ) AS classname_3,
group_concat( ( CASE WHEN kda.kq_dayAttendance_time = '2017-04-06' THEN kda.kq_classes_name ELSE NULL END ) ) AS classname_4,
group_concat( ( CASE WHEN kda.kq_dayAttendance_time = '2017-04-07' THEN kda.kq_classes_name ELSE NULL END ) ) AS classname_5,
group_concat( ( CASE WHEN kda.kq_dayAttendance_time = '2017-04-08' THEN kda.kq_classes_name ELSE NULL END ) ) AS classname_6,
group_concat( ( CASE WHEN kda.kq_dayAttendance_time = '2017-04-09' THEN kda.kq_classes_name ELSE NULL END ) ) AS classname_7,
kda.kq_classesteam_id,
ROUND(SUM(kqhb.workhour), 1) worktime
FROM
kq_dayAttendance kda
LEFT JOIN (
SELECT
da.kq_dayAttendance_empid,
da.kq_classes_id,
da.kq_dayAttendance_id,
kqda.kq_dayAttendancetime_checkintime,
kqda.kq_dayAttendancetime_checkouttime,
kqda.workhour
FROM
kq_dayAttendance da
LEFT JOIN (
SELECT
kq_dayAttendancetime_oldclassid,
kq_dayAttendance_id,
FORMAT(SUM(TIMESTAMPDIFF( MINUTE,kq_dayAttendancetime_checkintime,CASE WHEN kq_dayAttendancetime_checkintime > kq_dayAttendancetime_checkouttime 
THEN DATE_ADD(kq_dayAttendancetime_checkouttime,INTERVAL 24 HOUR) ELSE kq_dayAttendancetime_checkouttime END )) / 60,1) workhour,
kq_dayAttendancetime_checkintime,
kq_dayAttendancetime_checkouttime
FROM
kq_dayAttendancetime daya
WHERE
daya.kq_dayAttendancetime_comno =123
GROUP BY
daya.kq_dayAttendance_id
) kqda ON da.kq_dayAttendance_id = kqda.kq_dayAttendance_id
AND da.kq_classes_id = kqda.kq_dayAttendancetime_oldclassid
WHERE
da.kq_dayAttendance_delflag = 0
AND da.kq_dayAttendance_comno = 123
AND da.kq_dayAttendance_deldate IS NULL
AND da.kq_dayAttendance_time >= '2017-04-03'
AND da.kq_dayAttendance_time <= '2017-04-09'
) kqhb ON kda.kq_dayAttendance_id = kqhb.kq_dayAttendance_id
WHERE
kda.kq_dayAttendance_delflag = 0
AND kda.kq_dayAttendance_comno = 123
AND kda.kq_dayAttendance_deldate IS NULL
GROUP BY
kda.kq_dayAttendance_empid

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章