SELECT t_1.pk_group pk_group,
t_1.otyear otyear,
t_1.otmonth otmonth,
t_1.name psnname,
t_1.overtimebegintime overtimebegintime,
t_1.overtimeendtime overtimeendtime,
t_1.overtimehour overtimehour,
t_1.acthour acthour,
t_1.pk_overtimetype pk_overtimetype,
t_1.timeitemname timeitemname,
t_1.holidayothour holidayothour,
t_1.beforedutyhour beforedutyhour,
t_1.dutyfreehour dutyfreehour,
t_1.dutyhour dutyhour,
(t_1.dutyfreehour + t_1.dutyhour) sumothour,
t_1.approve_state approve_state
FROM (SELECT psn.pk_group pk_group,
substr(b.overtimeendtime, 0, 4) otyear,
substr(b.overtimeendtime, 6, 2) otmonth,
psn.name name,
b.overtimebegintime overtimebegintime,
b.overtimeendtime overtimeendtime,
b.overtimehour overtimehour,
b.acthour acthour,
h.pk_overtimetype pk_overtimetype,
item.timeitemname timeitemname,
decode(h.approve_state,
-1,
'未提交',
1,
'审批通过',
2,
'审批进行中',
3,
'提交',
'审批不通过') approve_state,
(CASE
WHEN h.pk_overtimetype IN
('1002Z710000000021ZLV', '1002Z710000000021ZLX') THEN
(CASE
WHEN b.acthour < 8 THEN
b.acthour
ELSE
8
END)
ELSE
0
END) holidayothour,
(CASE
WHEN h.pk_overtimetype IN
('1002Z710000000021ZLV', '1002Z710000000021ZLX') THEN
(CASE
WHEN b.acthour > 8 THEN
(b.acthour - 8)
ELSE
0
END)
ELSE
b.acthour
END) beforedutyhour,
(CASE
WHEN h.pk_overtimetype IN
('1002Z710000000021ZLV', '1002Z710000000021ZLX') THEN
(CASE
WHEN b.acthour < 8 THEN
b.acthour * 2
ELSE
8 * 2
END)
ELSE
0
END) dutyfreehour,
(CASE
WHEN h.pk_overtimetype IN
('1002Z710000000021ZLV', '1002Z710000000021ZLX') THEN
(CASE
WHEN b.acthour > 8 THEN
(b.acthour - 8) * 2
ELSE
0
END)
ELSE
(CASE
WHEN b.acthour <= 2 THEN
b.acthour * 1.33
WHEN b.acthour <= 4 THEN
b.acthour * 1.66
ELSE
b.acthour * 2
END)
END) dutyhour
FROM tbm_overtimeb b
INNER JOIN tbm_overtimeh h
ON b.pk_overtimeh = h.pk_overtimeh
INNER JOIN tbm_timeitem item
ON h.pk_overtimetype = item.pk_timeitem
INNER JOIN bd_psndoc psn
ON h.pk_psndoc = psn.pk_psndoc
WHERE b.pk_org = '00016H10000000000BIV') t_1
ORDER BY t_1.name, t_1.overtimeendtime
t_1.otyear otyear,
t_1.otmonth otmonth,
t_1.name psnname,
t_1.overtimebegintime overtimebegintime,
t_1.overtimeendtime overtimeendtime,
t_1.overtimehour overtimehour,
t_1.acthour acthour,
t_1.pk_overtimetype pk_overtimetype,
t_1.timeitemname timeitemname,
t_1.holidayothour holidayothour,
t_1.beforedutyhour beforedutyhour,
t_1.dutyfreehour dutyfreehour,
t_1.dutyhour dutyhour,
(t_1.dutyfreehour + t_1.dutyhour) sumothour,
t_1.approve_state approve_state
FROM (SELECT psn.pk_group pk_group,
substr(b.overtimeendtime, 0, 4) otyear,
substr(b.overtimeendtime, 6, 2) otmonth,
psn.name name,
b.overtimebegintime overtimebegintime,
b.overtimeendtime overtimeendtime,
b.overtimehour overtimehour,
b.acthour acthour,
h.pk_overtimetype pk_overtimetype,
item.timeitemname timeitemname,
decode(h.approve_state,
-1,
'未提交',
1,
'审批通过',
2,
'审批进行中',
3,
'提交',
'审批不通过') approve_state,
(CASE
WHEN h.pk_overtimetype IN
('1002Z710000000021ZLV', '1002Z710000000021ZLX') THEN
(CASE
WHEN b.acthour < 8 THEN
b.acthour
ELSE
8
END)
ELSE
0
END) holidayothour,
(CASE
WHEN h.pk_overtimetype IN
('1002Z710000000021ZLV', '1002Z710000000021ZLX') THEN
(CASE
WHEN b.acthour > 8 THEN
(b.acthour - 8)
ELSE
0
END)
ELSE
b.acthour
END) beforedutyhour,
(CASE
WHEN h.pk_overtimetype IN
('1002Z710000000021ZLV', '1002Z710000000021ZLX') THEN
(CASE
WHEN b.acthour < 8 THEN
b.acthour * 2
ELSE
8 * 2
END)
ELSE
0
END) dutyfreehour,
(CASE
WHEN h.pk_overtimetype IN
('1002Z710000000021ZLV', '1002Z710000000021ZLX') THEN
(CASE
WHEN b.acthour > 8 THEN
(b.acthour - 8) * 2
ELSE
0
END)
ELSE
(CASE
WHEN b.acthour <= 2 THEN
b.acthour * 1.33
WHEN b.acthour <= 4 THEN
b.acthour * 1.66
ELSE
b.acthour * 2
END)
END) dutyhour
FROM tbm_overtimeb b
INNER JOIN tbm_overtimeh h
ON b.pk_overtimeh = h.pk_overtimeh
INNER JOIN tbm_timeitem item
ON h.pk_overtimetype = item.pk_timeitem
INNER JOIN bd_psndoc psn
ON h.pk_psndoc = psn.pk_psndoc
WHERE b.pk_org = '00016H10000000000BIV') t_1
ORDER BY t_1.name, t_1.overtimeendtime