日常工作的sql


select * from (select re.recruit_name,
re.emp_no,
re.psDeptname,
re.branch_name2,
re.branch_name3,
re.branch_name4,
to_char(ci.check_time, ‘yyyy/mm/dd hh24:mi‘) check_time,
re.checkin_name,
decode(ci.checked, null, ‘未打卡‘, ‘N‘, ‘未打卡‘, ‘Y‘,‘已打卡‘, ‘R‘, ‘代打卡‘) checked,
ci.checked checkin_state,
ci.remark,
ci.operator
from (select r.recruit_name,
‘‘  psDeptname,
tt.emp_no,
decode(br.branch_code2,
null,
decode(r.branch_code, ‘86‘, ‘总公司‘, null),
br.branch_name2) branch_name2,
br.branch_name3,
br.branch_name4,
cr.checkin_name,
cr.rule_no,
cr.start_time
from checkin_rule    cr,
train_trainee   tt,
recruit         r,
branch_relation br
where cr.is_valid = ‘Y‘
and tt.is_valid = ‘Y‘
and r.is_valid = ‘Y‘
and cr.train_no = #{marketCheckInBO.trainNo}
<if test="marketCheckInBO.ruleNo != null and marketCheckInBO.ruleNo != ‘‘">
and cr.rule_no = #{marketCheckInBO.ruleNo}
</if>
<if test="marketCheckInBO.checkinSeqList != null and marketCheckInBO.checkinSeqList.size > 0">
and cr.checkin_seq in
<foreach collection="marketCheckInBO.checkinSeqList" item="seq" open="(" close=")" separator=",">
#{seq}
</foreach>
</if>
and tt.trainee_type = 3
<if test="marketCheckInBO.branchCode != null and marketCheckInBO.branchCode != ‘‘">
and exists (select 1
from branch_info bi
where r.branch_code = bi.branch_code
start with bi.branch_code = #{marketCheckInBO.branchCode}
connect by prior bi.branch_code = bi.parent_branch)
</if>
<if test="marketCheckInBO.recruitName != null and marketCheckInBO.recruitName != ‘‘">
and r.recruit_name like ‘%‘||#{marketCheckInBO.recruitName}||‘%‘
</if>
<if test="marketCheckInBO.empNo != null and marketCheckInBO.empNo != ‘‘">
and r.id_no = #{marketCheckInBO.empNo}
</if>
and tt.train_no = cr.train_no
and r.id_no = tt.emp_no
and br.branch_code = r.branch_code) re,
check_in ci
where ci.is_valid(+) = ‘Y‘
and ci.rule_no(+) = re.rule_no
and ci.emp_no(+) = re.emp_no
order by re.start_time   desc,
ci.checked      asc,
ci.check_time   desc,
re.branch_name4 asc,
re.recruit_name asc
) t
union
select * from (select re.recruit_name,
re.emp_no,
re.psDeptname,
re.branch_name2,
re.branch_name3,
re.branch_name4,
to_char(ci.check_time, ‘yyyy/mm/dd hh24:mi‘) check_time,
re.checkin_name,
decode(ci.checked, null, ‘未打卡‘, ‘N‘, ‘未打卡‘, ‘Y‘,‘已打卡‘, ‘R‘, ‘代打卡‘) checked,
ci.checked checkin_state,
ci.remark,
ci.operator
from (select st.emp_name recruit_name,
‘‘  psDeptname,
tt.emp_no,
br.branch_name2,
br.branch_name3,
br.branch_name4,
cr.checkin_name,
cr.rule_no,
cr.start_time
from checkin_rule  cr,train_trainee tt,staff_info st left join dept_info di on st.department_no = di.dept_no
left join branch_relation br on di.branch_code = br.branch_code
where cr.is_valid = ‘Y‘
and tt.is_valid = ‘Y‘
and st.is_valid = ‘Y‘
and cr.train_no = #{marketCheckInBO.trainNo}
<if test="marketCheckInBO.branchCode != null and marketCheckInBO.branchCode != ‘‘">
AND br.branch_code IN
(SELECT
bi.branch_code
FROM branch_info bi
START WITH bi.branch_code = #{marketCheckInBO.branchCode}
CONNECT BY PRIOR bi.branch_code = bi.parent_branch)
</if>
<if test="marketCheckInBO.recruitName != null and marketCheckInBO.recruitName != ‘‘">
AND st.EMP_NAME LIKE ‘%‘||#{marketCheckInBO.recruitName}||‘%‘
</if>
<if test="marketCheckInBO.empNo != null and marketCheckInBO.empNo != ‘‘">
AND tt.EMP_NO = #{marketCheckInBO.empNo}
</if>
<if test="marketCheckInBO.ruleNo != null and marketCheckInBO.ruleNo != ‘‘">
and cr.rule_no = #{marketCheckInBO.ruleNo}
</if>
and tt.trainee_type =1
and tt.train_no = cr.train_no
and tt.emp_no = st.emp_no
) re,
check_in ci
where ci.is_valid(+) = ‘Y‘
and ci.rule_no(+) = re.rule_no
and ci.emp_no(+) = re.emp_no
order by re.start_time   desc,
ci.checked      asc,
ci.check_time   desc,
re.branch_name4 asc,
re.recruit_name asc
)t
union
select * from (
select re.recruit_name,
re.emp_no,
re.psDeptname,
re.branch_name2,
re.branch_name3,
re.branch_name4,
to_char(ci.check_time, ‘yyyy/mm/dd hh24:mi‘) check_time,
re.checkin_name,
decode(ci.checked, null, ‘未打卡‘, ‘N‘, ‘未打卡‘, ‘Y‘,‘已打卡‘, ‘R‘, ‘代打卡‘) checked,
ci.checked checkin_state,
ci.remark,
ci.operator
from (select TEMP.recruit_name,
TEMP.emp_no,
TEMP.psDeptname,
‘‘  branch_name2,
‘‘  branch_name3,
‘‘ branch_name4,
cr.checkin_name,
cr.rule_no,
cr.start_time
from  checkin_rule  cr,
(select * from (
SELECT EMPO.*,
ROW_NUMBER() OVER(PARTITION BY EMPO.EMP_NO ORDER BY EMPO.CREATED_DATE ASC) RN
FROM (
select tt.EMP_NO,
tt.CREATED_DATE,
te.name recruit_name,
te.psDeptname  psDeptname,
tt.train_no
from TRAIN_TRAINEE tt,
(select distinct psop.emplid        emplId,
psop.name_display  name,
pod.ps_deptname    psDeptname
from ps_oa_personaldata psop,
ps_oa_job          poa,
ps_oa_dept         pod,
ps_oa_ad_user      poau
where psop.emplid = poa.emplid
and poa.deptid = pod.deptid
and psop.emplid = poau.emplid
and psop.is_valid_flag = ‘Y‘
and poa.is_valid = ‘Y‘
and pod.is_valid = ‘Y‘
and poa.EMPL_RCD = ‘0‘
and psop.business_unit = ‘SINOL‘
) te
where tt.IS_VALID = ‘Y‘
and tt.trainee_type = ‘2‘
and te.emplid(+) = tt.emp_no
<if test="marketCheckInBO.recruitName != null and marketCheckInBO.recruitName != ‘‘">
AND  te.name  LIKE ‘%‘||#{marketCheckInBO.recruitName}||‘%‘
</if>
<if test="marketCheckInBO.empNo != null and marketCheckInBO.empNo != ‘‘">
AND tt.emp_no = #{marketCheckInBO.empNo}
</if>
<if test="marketCheckInBO.psDeptname != null and marketCheckInBO.psDeptname != ‘‘">
AND  te.psDeptname  LIKE ‘%‘||#{marketCheckInBO.psDeptname}||‘%‘
</if>
AND tt.TRAIN_NO = #{marketCheckInBO.trainNo}
order by tt.CREATED_DATE
) EMPO) PO
WHERE RN = 1) TEMP
where cr.is_valid = ‘Y‘
and TEMP.train_no = cr.train_no
and cr.train_no = #{marketCheckInBO.trainNo}
<if test="marketCheckInBO.ruleNo != null and marketCheckInBO.ruleNo != ‘‘">
and cr.rule_no = #{marketCheckInBO.ruleNo}
</if>
) re,
check_in ci
where ci.is_valid(+) = ‘Y‘
and ci.rule_no(+) = re.rule_no
and ci.emp_no(+) = re.emp_no
order by re.start_time   desc,
ci.checked      asc,
ci.check_time   desc,
re.branch_name4 asc,
re.recruit_name asc
)t

日常工作的sql

原文:https://www.cnblogs.com/ethanSung/p/15269073.html

以上是日常工作的sql的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>