用友NC加班统计表SQL

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
发布了66 篇原创文章 · 获赞 19 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/hwq293/article/details/80021611