• 日常工作的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
    
    
  • 相关阅读:
    开发新手最容易犯的50个 Ruby on Rails 错误(1)
    Spring Data Redis 让 NoSQL 快如闪电(2)
    为什么每个程序员都应该懂点前端知识?
    如何在 Flickr 上找到又酷,又有趣,且版权自由的照片?
    微服务扩展新途径:Messaging
    为什么现代企业无法真正实现组合式监控?
    开发者和程序员需要关注的42个播客
    战略性情绪分析的5大数据来源
    Spring Data Redis 让 NoSQL 快如闪电 (1)
    对抗告警疲劳的8种方法
  • 原文地址:https://www.cnblogs.com/ethanSung/p/15269073.html
Copyright © 2020-2023  润新知