NC部门考勤月报定制sql

  1 SELECT t_1.pk_psndoc pk_psndoc,
  2        t_1.pk_group pk_group,
  3        t_1.pyear pyear,
  4        t_1.month month,
  5        t_1.code psncode,
  6        t_1.name psnname,
  7        t_1.glbdef1 glbdef1,
  8        t_1.thisyearyial thisyearyial,
  9        t_1.lastal lastal,
 10        t_1.lastbx lastbx,
 11        nvl(t_1.annualleave, 0) annualleave,
 12        nvl(t_1.absenceleave, 0) absenceleave,
 13        nvl(t_1.sickleave, 0) sickleave,
 14        nvl(t_1.compensatedleave, 0) compensatedleave,
 15        t_1.yxhunjia yxhunjia,
 16        t_1.yxsangjia yxsangjia,
 17        t_1.yxgongshang yxgongshang,
 18        t_1.yxchanjia yxchanjia,
 19        t_1.yxchanjian yxchanjian,
 20        t_1.yxpeichan yxpeichan,
 21        t_1.yxshijia yxshijia,
 22        t_1.yxbingjia yxbingjia,
 23        t_1.yxnianjia yxnianjia,
 24        t_1.jynianjia jynianjia,
 25        t_1.jybuxiu jybuxiu,
 26        hi_psnjob.pk_dept pk_dept
 27   FROM (SELECT ld.ym               ym,
 28                psn.pk_group        pk_group,
 29                psn.pk_psndoc       pk_psndoc,
 30                psn.code            code,
 31                psn.name            name,
 32                psn.glbdef1         glbdef1,
 33                bal.thisyearyial    thisyearyial,
 34                bal.lastal          lastal,
 35                tbbxv.lastbx        lastbx,
 36                bal.yxhunjia        yxhunjia,
 37                bal.yxsangjia       yxsangjia,
 38                bal.yxgongshang     yxgongshang,
 39                bal.yxchanjia       yxchanjia,
 40                bal.yxchanjian      yxchanjian,
 41                bal.yxpeichan       yxpeichan,
 42                bal.yxshijia        yxshijia,
 43                bal.yxbingjia       yxbingjia,
 44                bal.yxnianjia       yxnianjia,
 45                bal.jynianjia       jynianjia,
 46                bal.jybuxiu         jybuxiu,
 47                ld.annualleave      annualleave,
 48                ld.absenceleave     absenceleave,
 49                ld.sickleave        sickleave,
 50                ld.compensatedleave compensatedleave
 51           FROM bd_psndoc psn
 52          INNER JOIN leave_daily ld
 53             ON ld.pk_psnodc = psn.pk_psndoc
 54            AND ld.pk_org = psn.pk_org
 55          INNER JOIN (SELECT tbbx.pk_org pk_org,
 56                            tbbx.pk_psndoc pk_psndoc,
 57                            tbbx.curyear curyear,
 58                            sum(CASE
 59                                  WHEN tbbx.pk_timeitem = '10018G1000000000BM2L' THEN
 60                                   tbbx.realdayorhour - tbbx.yidayorhour -
 61                                   tbbx.freezedayorhour
 62                                  ELSE
 63                                   0
 64                                END) lastbx
 65                       FROM tbm_leavebalance tbbx
 66                      GROUP BY tbbx.pk_org, tbbx.pk_psndoc, tbbx.curyear) tbbxv
 67             ON psn.pk_psndoc = tbbxv.pk_psndoc
 68            AND psn.pk_org = tbbxv.pk_org
 69            AND tbbxv.curyear = substr(ld.ym, 0, 4) - 1
 70          INNER JOIN (SELECT tb.pk_org pk_org,
 71                            tb.pk_psndoc pk_psndoc,
 72                            tb.curyear curyear,
 73                            sum(CASE
 74                                  WHEN tb.pk_timeitem = '1002Z710000000021ZLJ' THEN
 75                                   tb.curdayorhour
 76                                  ELSE
 77                                   0
 78                                END) thisyearyial,
 79                            sum(CASE
 80                                  WHEN tb.pk_timeitem = '1002Z710000000021ZLJ' THEN
 81                                   tb.lastdayorhour
 82                                  ELSE
 83                                   0
 84                                END) lastal,
 85                            sum(CASE
 86                                  WHEN tb.pk_timeitem = '1002Z710000000021ZLF' THEN
 87                                   tb.yidayorhour + tb.freezedayorhour
 88                                  ELSE
 89                                   0
 90                                END) yxhunjia,
 91                            sum(CASE
 92                                  WHEN tb.pk_timeitem = '1002Z710000000021ZLN' THEN
 93                                   tb.yidayorhour + tb.freezedayorhour
 94                                  ELSE
 95                                   0
 96                                END) yxsangjia,
 97                            sum(CASE
 98                                  WHEN tb.pk_timeitem = '1002Z710000000021ZLP' THEN
 99                                   tb.yidayorhour + tb.freezedayorhour
100                                  ELSE
101                                   0
102                                END) yxgongshang,
103                            sum(CASE
104                                  WHEN tb.pk_timeitem = '1002Z710000000021ZLH' THEN
105                                   tb.yidayorhour + tb.freezedayorhour
106                                  ELSE
107                                   0
108                                END) yxchanjia,
109                            sum(CASE
110                                  WHEN tb.pk_timeitem = '10018G1000000000IOLU' THEN
111                                   tb.yidayorhour + tb.freezedayorhour
112                                  ELSE
113                                   0
114                                END) yxchanjian,
115                            sum(CASE
116                                  WHEN tb.pk_timeitem = '10018G1000000000BM2X' THEN
117                                   tb.yidayorhour + tb.freezedayorhour
118                                  ELSE
119                                   0
120                                END) yxpeichan,
121                            sum(CASE
122                                  WHEN tb.pk_timeitem = '1002Z710000000021ZLB' THEN
123                                   tb.yidayorhour + tb.freezedayorhour
124                                  ELSE
125                                   0
126                                END) yxshijia,
127                            sum(CASE
128                                  WHEN tb.pk_timeitem = '1002Z710000000021ZLD' THEN
129                                   tb.yidayorhour + tb.freezedayorhour
130                                  ELSE
131                                   0
132                                END) yxbingjia,
133                            sum(CASE
134                                  WHEN tb.pk_timeitem = '1002Z710000000021ZLJ' THEN
135                                   tb.yidayorhour + tb.freezedayorhour
136                                  ELSE
137                                   0
138                                END) yxnianjia,
139                            sum(CASE
140                                  WHEN tb.pk_timeitem = '1002Z710000000021ZLJ' THEN
141                                   tb.curdayorhour - tb.yidayorhour -
142                                   tb.freezedayorhour
143                                  ELSE
144                                   0
145                                END) jynianjia,
146                            sum(CASE
147                                  WHEN tb.pk_timeitem = '10018G1000000000BM2L' THEN
148                                   tb.realdayorhour - tb.yidayorhour -
149                                   tb.freezedayorhour
150                                  ELSE
151                                   0
152                                END) jybuxiu
153                       FROM tbm_leavebalance tb
154                      GROUP BY tb.pk_org, tb.pk_psndoc, tb.curyear) bal
155             ON psn.pk_psndoc = bal.pk_psndoc
156            AND psn.pk_org = bal.pk_org
157            AND bal.curyear = substr(ld.ym, 0, 4)
158          WHERE psn.pk_org = '00016H10000000000BIV') t_1
159  INNER JOIN hi_psnjob hi_psnjob
160     ON (t_1.pk_psndoc = hi_psnjob.pk_psndoc AND hi_psnjob.ismainjob = 'Y' AND
161        hi_psnjob.lastflag = 'Y')
162  INNER JOIN (SELECT * FROM org_dept) org_dept
163     ON (hi_psnjob.pk_dept = org_dept.pk_dept)
164  WHERE org_dept.principal = (SELECT pk_base_doc pk_base_doc FROM cp_user)
165  ORDER BY t_1.ym

 

posted @ 2018-11-27 00:10  杨浪  阅读(377)  评论(0编辑  收藏  举报