ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 公司一条特长的SQL

公司一条特长的SQL

原创 Linux操作系统 作者:zhouxianwang 时间:2012-06-29 14:49:46 0 删除 编辑
[i=s] 本帖最后由 zhouxianwang 于 2012-6-29 14:49 编辑

SELECT EMP_NO,
       EMP_NM,
       DEPT_CD,
       DEPT_NM,
       D01 || F_GET_APP_NM('3000', EMP_NO, W01, F01) AS D01,
       F01,
       W01,
       D02 || F_GET_APP_NM('3000', EMP_NO, W02, F02) AS D02,
       F02,
       W02,
       D03 || F_GET_APP_NM('3000', EMP_NO, W03, F03) AS D03,
       F03,
       W03,
       D04 || F_GET_APP_NM('3000', EMP_NO, W04, F04) AS D04,
       F04,
       W04,
       D05 || F_GET_APP_NM('3000', EMP_NO, W05, F05) AS D05,
       F05,
       W05,
       D06 || F_GET_APP_NM('3000', EMP_NO, W06, F06) AS D06,
       F06,
       W06,
       D07 || F_GET_APP_NM('3000', EMP_NO, W07, F07) AS D07,
       F07,
       W07,
       D08 || F_GET_APP_NM('3000', EMP_NO, W08, F08) AS D08,
       F08,
       W08,
       D09 || F_GET_APP_NM('3000', EMP_NO, W09, F09) AS D09,
       F09,
       W09,
       D10 || F_GET_APP_NM('3000', EMP_NO, W10, F10) AS D10,
       F10,
       W10,
       D11 || F_GET_APP_NM('3000', EMP_NO, W11, F11) AS D11,
       F11,
       W11,
       D12 || F_GET_APP_NM('3000', EMP_NO, W12, F12) AS D12,
       F12,
       W12,
       D13 || F_GET_APP_NM('3000', EMP_NO, W13, F13) AS D13,
       F13,
       W13,
       D14 || F_GET_APP_NM('3000', EMP_NO, W14, F14) AS D14,
       F14,
       W14,
       D15 || F_GET_APP_NM('3000', EMP_NO, W15, F15) AS D15,
       F15,
       W15,
       D16 || F_GET_APP_NM('3000', EMP_NO, W16, F16) AS D16,
       F16,
       W16,
       D17 || F_GET_APP_NM('3000', EMP_NO, W17, F17) AS D17,
       F17,
       W17,
       D18 || F_GET_APP_NM('3000', EMP_NO, W18, F18) AS D18,
       F18,
       W18,
       D19 || F_GET_APP_NM('3000', EMP_NO, W19, F19) AS D19,
       F19,
       W19,
       D20 || F_GET_APP_NM('3000', EMP_NO, W20, F20) AS D20,
       F20,
       W20,
       D21 || F_GET_APP_NM('3000', EMP_NO, W21, F21) AS D21,
       F21,
       W21,
       D22 || F_GET_APP_NM('3000', EMP_NO, W22, F22) AS D22,
       F22,
       W22,
       D23 || F_GET_APP_NM('3000', EMP_NO, W23, F23) AS D23,
       F23,
       W23,
       D24 || F_GET_APP_NM('3000', EMP_NO, W24, F24) AS D24,
       F24,
       W24,
       D25 || F_GET_APP_NM('3000', EMP_NO, W25, F25) AS D25,
       F25,
       W25,
       D26 || F_GET_APP_NM('3000', EMP_NO, W26, F26) AS D26,
       F26,
       W26,
       D27 || F_GET_APP_NM('3000', EMP_NO, W27, F27) AS D27,
       F27,
       W27,
       D28 || F_GET_APP_NM('3000', EMP_NO, W28, F28) AS D28,
       F28,
       W28,
       D29 || F_GET_APP_NM('3000', EMP_NO, W29, F29) AS D29,
       F29,
       W29,
       D30 || F_GET_APP_NM('3000', EMP_NO, W30, F30) AS D30,
       F30,
       W30,
       D31 || F_GET_APP_NM('3000', EMP_NO, W31, F31) AS D31,
       F31,
       W31
  FROM (SELECT EMP_NO,
               EMP_NM,
               DEPT_CD,
               DEPT_NM,
               NVL(S01, '  ') || '~' || NVL(E01, '  ') D01,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-01', S01, E01) F01,
               NVL(S02, '  ') || '~' || NVL(E02, '  ') D02,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-02', S02, E02) F02,
               NVL(S03, '  ') || '~' || NVL(E03, '  ') D03,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-03', S03, E03) F03,
               NVL(S04, '  ') || '~' || NVL(E04, '  ') D04,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-04', S04, E04) F04,
               NVL(S05, '  ') || '~' || NVL(E05, '  ') D05,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-05', S05, E05) F05,
               NVL(S06, '  ') || '~' || NVL(E06, '  ') D06,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-06', S06, E06) F06,
               NVL(S07, '  ') || '~' || NVL(E07, '  ') D07,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-07', S07, E07) F07,
               NVL(S08, '  ') || '~' || NVL(E08, '  ') D08,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-08', S08, E08) F08,
               NVL(S09, '  ') || '~' || NVL(E09, '  ') D09,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-09', S09, E09) F09,
               NVL(S10, '  ') || '~' || NVL(E10, '  ') D10,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-10', S10, E10) F10,
               NVL(S11, '  ') || '~' || NVL(E11, '  ') D11,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-11', S11, E11) F11,
               NVL(S12, '  ') || '~' || NVL(E12, '  ') D12,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-12', S12, E12) F12,
               NVL(S13, '  ') || '~' || NVL(E13, '  ') D13,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-13', S13, E13) F13,
               NVL(S14, '  ') || '~' || NVL(E14, '  ') D14,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-14', S14, E14) F14,
               NVL(S15, '  ') || '~' || NVL(E15, '  ') D15,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-15', S15, E15) F15,
               NVL(S16, '  ') || '~' || NVL(E16, '  ') D16,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-16', S16, E16) F16,
               NVL(S17, '  ') || '~' || NVL(E17, '  ') D17,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-17', S17, E17) F17,
               NVL(S18, '  ') || '~' || NVL(E18, '  ') D18,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-18', S18, E18) F18,
               NVL(S19, '  ') || '~' || NVL(E19, '  ') D19,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-19', S19, E19) F19,
               NVL(S20, '  ') || '~' || NVL(E20, '  ') D20,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-20', S20, E20) F20,
               NVL(S21, '  ') || '~' || NVL(E21, '  ') D21,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-21', S21, E21) F21,
               NVL(S22, '  ') || '~' || NVL(E22, '  ') D22,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-22', S22, E22) F22,
               NVL(S23, '  ') || '~' || NVL(E23, '  ') D23,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-23', S23, E23) F23,
               NVL(S24, '  ') || '~' || NVL(E24, '  ') D24,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-24', S24, E24) F24,
               NVL(S25, '  ') || '~' || NVL(E25, '  ') D25,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-25', S25, E25) F25,
               NVL(S26, '  ') || '~' || NVL(E26, '  ') D26,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-26', S26, E26) F26,
               NVL(S27, '  ') || '~' || NVL(E27, '  ') D27,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-27', S27, E27) F27,
               NVL(S28, '  ') || '~' || NVL(E28, '  ') D28,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-28', S28, E28) F28,
               NVL(S29, '  ') || '~' || NVL(E29, '  ') D29,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-29', S29, E29) F29,
               NVL(S30, '  ') || '~' || NVL(E30, '  ') D30,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-30', S30, E30) F30,
               NVL(S31, '  ') || '~' || NVL(E31, '  ') D31,
               F_GET_ATT_TYP(EMP_NO, '3000','2012-06' || '-31', S31, E31) F31,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-26' W26,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-27' W27,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-28' W28,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-29' W29,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-30' W30,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-31' W31,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-01' W01,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-02' W02,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-03' W03,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-04' W04,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-05' W05,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-06' W06,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-07' W07,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-08' W08,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-09' W09,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-10' W10,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-11' W11,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-12' W12,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-13' W13,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-14' W14,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-15' W15,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-16' W16,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-17' W17,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-18' W18,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-19' W19,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-20' W20,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-21' W21,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-22' W22,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-23' W23,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-24' W24,
               TO_CHAR(TO_DATE('2012-06', 'YYYY-MM'), 'YYYY-MM') || '-25' W25
          FROM (SELECT EMP_NO,
                       EMP_NM,
                       DEPT_CD,
                       DEPT_NM,
                       SORT_SEQ,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '01' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S01,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '01' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E01,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '02' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S02,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '02' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E02,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '03' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S03,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '03' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E03,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '04' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S04,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '04' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E04,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '05' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S05,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '05' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E05,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '06' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S06,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '06' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E06,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '07' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S07,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '07' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E07,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '08' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S08,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '08' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E08,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '09' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S09,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '09' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E09,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '10' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S10,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '10' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E10,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '11' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S11,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '11' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E11,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '12' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S12,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '12' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E12,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '13' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S13,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '13' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E13,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '14' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S14,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '14' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E14,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '15' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S15,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '15' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E15,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '16' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S16,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '16' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E16,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '17' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S17,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '17' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E17,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '18' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S18,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '18' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E18,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '19' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S19,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '19' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E19,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '20' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S20,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '20' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E20,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '21' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S21,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '21' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E21,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '22' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S22,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '22' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E22,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '23' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S23,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '23' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E23,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '24' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S24,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '24' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E24,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '25' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S25,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '25' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E25,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '26' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S26,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '26' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E26,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '27' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S27,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '27' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E27,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '28' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S28,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '28' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E28,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '29' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S29,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '29' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E29,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '30' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S30,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '30' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E30,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '31' THEN
                              TO_CHAR(WORK_START_DTM, 'HH24:MI')
                           END) S31,
                       MAX(CASE
                             WHEN TO_CHAR(WORK_DATE, 'DD') = '31' THEN
                              TO_CHAR(WORK_END_DTM, 'HH24:MI')
                           END) E31
                  FROM (SELECT A.CORP_CD,
                               A.EMP_NO,
                               A.EMP_NM,
                               A.DEPT_CD,
                               A.DEPT_NM,
                               A.SORT_SEQ,
                               B.WORK_DATE,
                               B.WORK_START_DTM,
                               B.WORK_END_DTM
                          FROM (SELECT R.CORP_CD,
                                       R.EMP_NO,
                                       R.EMP_NM,
                                       R.DEPT_CD,
                                       R.DEPT_NM,
                                       R.SORT_SEQ
                                  FROM V_ESS_USER R
                                 WHERE R.CORP_CD = '3000'
                                   AND (R.POSITION_CD != '442' OR
                                       R.POSITION_CD IS NULL)
                                   AND EMP_NO NOT IN ('204022',
                                                      '207758',
                                                      '207338',
                                                      '210857',
                                                      '196001',
                                                      '196000')
                                   AND EXISTS
                                 (SELECT DEPT_CD
                                          FROM V_ESS_DEPT
                                         WHERE CORP_CD = '3000'
                                           AND DEPT_CD = R.DEPT_CD
                                         START WITH DEPT_CD = '200000'
                                        CONNECT BY PRIOR DEPT_CD = PARENT_DEPT_CD)
                                   AND NOT EXISTS
                                 (SELECT *
                                          FROM (SELECT DEPT_CD
                                                  FROM V_ESS_DEPT
                                                 WHERE CORP_CD = '3000'
                                                 START WITH DEPT_CD = '400000'
                                                CONNECT BY PRIOR DEPT_CD =
                                                            PARENT_DEPT_CD)
                                         WHERE R.DEPT_CD = DEPT_CD)
                                 ORDER BY R.SORT_SEQ) A,
                               (SELECT CORP_CD,
                                       EMP_NO,
                                       WORK_DATE,
                                       WORK_START_DTM,
                                       WORK_END_DTM
                                  FROM ESS_ATT_INFO
                                 WHERE TO_CHAR(WORK_DATE, 'YYYY-MM') = '2012-06') B
                         WHERE A.EMP_NO = B.EMP_NO(+)
                           AND A.CORP_CD = B.CORP_CD(+)
                           AND A.CORP_CD = '3000')
                 GROUP BY DEPT_CD, DEPT_NM, EMP_NO, EMP_NM, SORT_SEQ
                 ORDER BY DEPT_CD,
                          NLSSORT(SORT_SEQ, 'NLS_SORT=SCHINESE_PINYIN_M'),
                          NLSSORT(EMP_NM, 'NLS_SORT=SCHINESE_PINYIN_M')))
                          
;

  我对SQL不太懂,一看到这么长的SQL就头晕! 并且这个SQL里面还有VIEW 又包含了许多表,看看大家能不能给一些建议,应怎样优化一下?


WORKLOAD REPOSITORY SQL Report:


awrsqlrpt_1_10526_10527.rar
(2012-06-29 14:47:18, Size: 5.76 KB, Downloads: )







来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/27036311/viewspace-734143/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Linux Hugepages[转]
下一篇: 需要测试的东东
请登录后发表评论 登录
全部评论

注册时间:2012-06-04

  • 博文量
    144
  • 访问量
    493872