zOs/SQL/PLANVW

//A540769W JOB (CP00,KE50),'DB2 REO',                                   00010000
//         MSGCLASS=T,TIME=1440,                                        00020000
//         NOTIFY=&SYSUID,REGION=0M                                     00030000
   ===> nach planTable geMoved
//*MAIN CLASS=LOG                                                       00040000
//*
//* PLAN_VIEW1 - 8  VIEWs auf Explain tables
//*
//* 11.02.11 W.Keller ix Multi renamed
//* 23.09.2010 accessTypen Anzeige, user Views am Anfang
//* 25.01.10 W.Keller view5 geflickt (bind_time fehlte im on)
//* 17.12.09 W.Keller kopiert aus cPlanVi*
//*
//STEP01  EXEC PGM=IKJEFT01,COND=(4,LT)
//SYSTSPRT  DD SYSOUT=*
//SYSPRINT  DD SYSOUT=*
//SYSUDUMP  DD SYSOUT=*
//PLIDUMP   DD SYSOUT=*
//SYSTSIN   DD *
 DSN SYSTEM(DBAF)
  RUN  PROGRAM(DSNTEP2) PLAN(DSNTEP2) -
         PARMS('/ALIGN(LHS) MIXED')
 END
//SYSIN     DD *
   SET CURRENT SQLID = 'S100447';
   set current path 'OA1A';
   drop   VIEW A540769.PLAN_VIEW5 ;
   DROP   VIEW A540769.PLAN_Filt ;
   DROP   VIEW A540769.PLAN_ViewPred ;
   DROP   VIEW A540769.PLAN_VIEW1 ;
   DROP   VIEW A540769.PLAN_VIEW0 ;
   DROP   VIEW A540769.PLAN_VIEW3 ;
   drop   VIEW A540769.PLAN_VIEW6 ;
   drop   VIEW A540769.PLAN_VIEW6_CMN ;
   drop   VIEW A540769.PLAN_VIEW7 ;
   drop   VIEW A540769.PLAN_VIEW9 ;
------- -----------------------------------------------------------------
create view A540769.plan_view0 as
select count(*) eCnt,
       substr(coalesce(e.collid, p.collid), 1, 8) co,
       substr(coalesce(e.progName, p.name), 1, 8) pg,
       substr(coalesce(e.version, p.version), 1, 16) ve,
       p.pcTimeStamp,
       case when p.bindtime > e.bind_time then '>'
            when p.bindtime = e.bind_time then '='
                                          else '<' end c,
       e.bind_time,
       p.collid,
       p.name,
       p.version,
       p.contoken,
       p.bindtime lastBind,
       e.collid eCo,
       e.progName ePg,
       e.applName eAp,
       e.version  eVe
    from sysIbm.sysPackage p
    left join A540769.plan_table e
      on e.collid = p.collid and e.progName = p.name
        and e.version = p.version
    group by p.collid,
             p.name,
             p.version,
             p.pcTimeStamp,
             p.contoken,
             p.bindtime,
             e.collid    ,
             e.progName    ,
             e.applName    ,
             e.version,
             e.bind_time
;
CREATE VIEW A540769.PLAN_VIEW1 AS
select  substr(right('     ' || strip(char(queryNo))   , 6)
            || right('  '    || strip(char(qBlockNo))  , 2)
            || right('  '    || strip(char(planNo))    , 2)
            || right('  '    || strip(char(mixOpSeq)), 1)
            ,1 ,11) "Queryn B PM",
        QBLOCK_TYPE AS "TYPE",
        CASE WHEN PRIMARY_ACCESSTYPE = 'D' then 'dirRow'
             WHEN ACCESSTYPE = 'I ' THEN 'ixScan'
             WHEN ACCESSTYPE = 'I1' THEN 'ixOne '
             WHEN ACCESSTYPE = 'R ' THEN 'tsScan'
             WHEN ACCESSTYPE = 'RW' THEN 'woScan'
             WHEN ACCESSTYPE = 'N ' THEN 'ixSPin'
             WHEN ACCESSTYPE = 'M ' THEN 'ixMult'
             WHEN ACCESSTYPE = 'MX' THEN 'ixMSca'
             WHEN ACCESSTYPE = 'MI' THEN 'ixMInt'
             WHEN ACCESSTYPE = 'MU' THEN 'ixMUni'
             WHEN ACCESSTYPE = 'T ' THEN 'ixSPRS'
             WHEN ACCESSTYPE = 'V ' THEN 'insBuf'
             WHEN ACCESSTYPE = '  ' THEN '      '
             ELSE                        '??' || accessType
        END AS ACCESS,
        CASE WHEN ACCESSTYPE = 'R  ' THEN '       '
             when PRIMARY_ACCESSTYPE = 'D' THEN '       '
             ELSE SUBSTR(ACCESSNAME, 1, 12) END AS "INDEX",
        SUBSTR(TNAME, 1, 12) AS "TABLE",
        CASE WHEN TABLE_TYPE IS NULL THEN '      '
             ELSE TABLE_TYPE END AS TTYP,
        CASE WHEN METHOD = 3 THEN '      '
             WHEN ACCESSTYPE = 'R ' THEN '      '
             ELSE SUBSTR(DIGITS(MATCHCOLS), 5, 1) || '  ' || indexOnly
        END AS MC_O,
        CASE METHOD WHEN 0 THEN '      '
            WHEN 1 THEN 'NLJOIN'
            when 2 THEN 'SMJOIN'
            WHEN 3 THEN 'SORT  '
            WHEN 4 THEN 'HYJOIN'
            ELSE NULL END AS METHOD,
        CASE JOIN_TYPE WHEN 'F' THEN 'full'
            WHEN 'L' THEN 'left'
            WHEN 'S' THEN 'star'
            ELSE ' ' END AS "joiT",
        SORTN_UNIQ CONCAT SORTN_JOIN CONCAT SORTN_ORDERBY CONCAT
            SORTN_GROUPBY AS UJOG,
        SORTC_UNIQ CONCAT SORTC_JOIN CONCAT SORTC_ORDERBY CONCAT
            SORTC_GROUPBY AS UJOC,
        TSLOCKMODE AS LCK,
        SUBSTR(CORRELATION_NAME, 1, 4) AS CORR,
        CASE PARALLELISM_MODE WHEN 'C' THEN 'CPU'
            WHEN 'I' THEN 'I-O'
            WHEN 'X' THEN 'SYSPLEX'
            ELSE NULL END AS PARAL,
        STRIP(DIGITS(ACCESS_DEGREE), LEADING, '0') || ' '
            || STRIP(DIGITS(JOIN_DEGREE), LEADING, '0') AS AJ_DEG,
        STRIP(DIGITS(ACCESS_PGROUP_ID), LEADING, '0')|| ' '
            || STRIP(DIGITS(JOIN_PGROUP_ID), LEADING, '0') PG_DEG,
        STRIP(DIGITS(MERGE_JOIN_COLS), LEADING, '0') AS MC,
        PREFETCH AS PRE,
        substr(opthint, 1, 10) optHint,
        substr(hint_used, 1, 10) hint_used,
            -- full length names
        TNAME, ACCESSNAME,
            -- package identifikation
        collid, progName, applName, version, bind_time,
            -- query node identificaten
        queryno, qBlockNo, planno, mixopSeq, timestamp,
            PARENT_QBLOCKNO
     FROM A540769.PLAN_TABLE A
;
-------------------------------------------------------------------------
   CREATE VIEW A540769.PLAN_VIEW2 AS

   SELECT CASE WHEN METHOD = 'SORT  ' THEN '  '
               ELSE substr(right('         '
                    || strip(CHAR(S.PROCMS)),9), 1, 9) END AS MSEC,
        a.*,
        S.COST_CATEGORY,
        S.PROCMS, S.PROCSU, S.REASON
     FROM A540769.PLAN_VIEW1 A
     LEFT OUTER JOIN
          A540769.DSN_STATEMNT_TABLE S
       ON    S."COLLID"     = A."COLLID"
         AND S.APPLNAME     = A.APPLNAME
         AND S.PROGNAME     = A.PROGNAME
         AND S.EXPLAIN_TIME = A.BIND_TIME
         AND S.QUERYNO      = A.QUERYNO
;
-------------------------------------------------------------------------
   CREATE VIEW A540769.PLAN_VIEW2Det AS

   SELECT substr(fosFmtE7(dmRows), 1, 7) dmRows,
          substr(fosFmtE7(rdsRow), 1, 7) rdsRow,
          substr(fosFmtE7(snRows), 1, 7) snRows,
          substr(fosFmtE7(compCost), 1, 7) compCost,
          substr(fosFmtE7(openCost), 1, 7) openCost,
        a.*
     FROM A540769.PLAN_VIEW1 A
     LEFT OUTER JOIN
          A540769.DSN_DetCost_TABLE d
       on    d.APPLNAME = A.APPLNAME
         AND d.PROGNAME = A.PROGNAME
         AND d.EXPLAIN_TIME = A.BIND_TIME
         AND d.QBlockNO = A.QBlockNO
         AND d.PlanNo   = A.PlanNo
;
CREATE VIEW A540769.plan_ViewPred as
select  substr(right('     ' || strip(char(f.queryNo))   , 6)
            || right('  '    || strip(char(f.qBlockNo))  , 2)
            || right('  '    || strip(char(f.planNo))    , 2)
            || right('  '    || strip(char(f.mixOpSeqNo)), 1)
            ,1 ,11) "Queryn B PM"
     , stage
     , substr(fosFmte7(p.filter_factor), 1, 7) ff
     , p.type
     , p.text
     , f.COLLID
     , f.PROGNAME
     , f.APPLNAME
     , f.EXPLAIN_TIME
     , f.QUERYNO
     , f.QBLOCKNO
     , f.PLANNO
     , f.ORDERNO
     , f.PREDNO
     , f.MIXOPSEQNO
     , p.LEFT_HAND_SIDE
     , p.LEFT_HAND_PNO
     , p.LHS_TABNO
     , p.LHS_QBNO
     , p.RIGHT_HAND_SIDE
     , p.RIGHT_HAND_PNO
     , p.RHS_TABNO
     , p.RHS_QBNO
     , p.FILTER_FACTOR
     , p.BOOLEAN_TERM
     , p.SEARCHARG
     , p.JOIN
     , p.AFTER_JOIN
     , p.ADDED_PRED
     , p.REDUNDANT_PRED
     , p.DIRECT_ACCESS
     , p.KEYFIELD
     , p.CATEGORY
     , p.CATEGORY_B
     , p.PRED_ENCODE
     , p.PRED_CCSID
     , p.PRED_MCCSID
     , p.MARKER
     , p.PARENT_PNO
     , p.NEGATION
     , p.LITERALS
     , p.CLAUSE
from A540769.dsn_filter_Table f
    left join A540769.dsn_predicat_table p
      on    f.progName     = p.progName
        and f.applName     = p.applName
        and f.applName     = p.applName
        and f.explain_time = p.explain_time
        and f.queryNo      = p.queryNo
        and f.qBlockNo     = p.qBlockNo
        and f.predNo       = p.predNo
;
--  sortierung --------------------------------------
--  order by collid, progName, applName, explain_time,
--           queryNo, qBlockNo, planno,
--           stage, orderNo
;
-------------------------------------------------------------------------
   CREATE VIEW A540769.PLAN_VIEW5 AS
   SELECT *

     FROM A540769.PLAN_VIEW2 A
     JOIN
          (SELECT B."COLLID" AS BCOLLID,
                  B.APPLNAME AS BAPPLNAME, B.PROGNAME AS BPROGNAME,
                  MAX(B.BIND_TIME) AS BBIND_TIME
             FROM A540769.PLAN_TABLE B
             GROUP BY B."COLLID",
                      B.APPLNAME,
                      B.PROGNAME) AS N1
            ON A."COLLID" = N1."BCOLLID"
           AND A.PROGNAME = N1.BPROGNAME
           AND A.APPLNAME = N1.BAPPLNAME
           AND A.bind_time = N1.BBind_time
;
commit;
commit;
------------ Ende user Views ------------------------------------------
-- //CMNONLY     DD *
------------ Rest brauchts nur für changeMan ||| ----------------------
commit;
-- ;x;
-------------------------------------------------------------------------
CREATE VIEW      A540769.PLAN_VIEW3
( QN,QB,AP,PG, PN,ME,CR,TN,TO, AT,JT,MC,AN,IO, SP,SU,SJ, SO, SG,ZP,ZU,
ZJ, ZO,ZG,TL,TS,PR,EV, CO,VR,MO, AD,AI, JD,JI, PA,MJ,CN, PF,GM,WO,QT,
 BT,RM,SD, OH,HU,PAC )
 AS SELECT QUERYNO, QBLOCKNO, APPLNAME, PROGNAME, PLANNO, METHOD,
 CREATOR, TNAME, TABNO, ACCESSTYPE, JOIN_TYPE, MATCHCOLS, ACCESSNAME,
 INDEXONLY, SORTN_PGROUP_ID, SORTN_UNIQ, SORTN_JOIN, SORTN_ORDERBY,
 SORTN_GROUPBY, SORTC_PGROUP_ID, SORTC_UNIQ, SORTC_JOIN, SORTC_ORDERBY,
 SORTC_GROUPBY, TSLOCKMODE, TIMESTAMP, PREFETCH, COLUMN_FN_EVAL, COLLID,
 VERSION, MIXOPSEQ, ACCESS_DEGREE, ACCESS_PGROUP_ID, JOIN_DEGREE,
 JOIN_PGROUP_ID, PARALLELISM_MODE, MERGE_JOIN_COLS, CORRELATION_NAME,
 PAGE_RANGE, GROUP_MEMBER, WHEN_OPTIMIZE, QBLOCK_TYPE, BIND_TIME,
 REMARKS, IBM_SERVICE_DATA, OPTHINT, HINT_USED, PRIMARY_ACCESSTYPE
 FROM A540769.PLAN_TABLE
;
-------------------------------------------------------------------------
CREATE VIEW A540769.PLAN_VIEW6 AS
  SELECT SUBSTR(A.PROGNAME, 1, 8) AS PROGNAME,
         SUBSTR(DIGITS(A."QUERYNO"), 5) AS STMT,

         CASE WHEN A.METHOD = 3
              THEN '       '
--            ELSE SUBSTR(CHAR(S.PROCSU), 1, 7) END AS SUNITS,
              ELSE '1      '
                                                      END AS SUNITS,

         CASE WHEN A.PRIMARY_ACCESSTYPE = 'D' THEN 'DIR.ROW'
              WHEN A.ACCESSTYPE = 'I ' THEN 'IX-SCAN'
              WHEN A.ACCESSTYPE = 'I1' THEN 'IX-ONEF'
              WHEN A.ACCESSTYPE = 'M ' THEN 'MULT-IX'
              WHEN A.ACCESSTYPE = 'MX' THEN 'IX-SC.X'
              WHEN A.ACCESSTYPE = 'MI' THEN 'IX-SC.I'
              WHEN A.ACCESSTYPE = 'MU' THEN 'IX-SC.U'
              WHEN A.ACCESSTYPE = 'N ' THEN 'IX-INLI'
              WHEN A.ACCESSTYPE = 'R ' THEN 'TS-SCAN'
              WHEN A.ACCESSTYPE = 'RW' THEN 'WF-SCAN'
              WHEN A.ACCESSTYPE = 'T ' THEN 'IX-SPRS'
              WHEN A.ACCESSTYPE = 'V ' THEN 'BUFFERS'
              WHEN A.ACCESSTYPE = '  ' THEN '       '
                                       ELSE '       ' END AS ACCESS,

         CASE WHEN A.PRIMARY_ACCESSTYPE = 'D' THEN '            '
           WHEN A.ACCESSTYPE = 'R  ' THEN '            '
           ELSE SUBSTR(A.ACCESSNAME, 1, 12)           END AS "INDEX",

         CASE WHEN A.TNAME = ' ' THEN '            '
              ELSE SUBSTR(A.TNAME, 1, 12)             END AS "TABLE",

         SUBSTR(A.CORRELATION_NAME, 1, 5)                 AS CORR,
         CASE WHEN A.METHOD = 3         THEN '  '
              WHEN A.ACCESSTYPE = 'R '  THEN '  '
              WHEN A.QBLOCK_TYPE = 'INSERT' THEN '  '
              ELSE SUBSTR(DIGITS(A.MATCHCOLS), 5, 1)  END AS MC,

         CASE WHEN A.INDEXONLY = 'Y' THEN 'XO'
              ELSE '  '                               END AS XO,

         CASE A.METHOD
              WHEN 0 THEN '0     '
              WHEN 1 THEN 'NLJOIN'
              WHEN 2 THEN 'SMJOIN'
              WHEN 3 THEN 'SORT  '
              WHEN 4 THEN 'HYJOIN'
              ELSE CHAR(A.METHOD)                     END AS METHOD,

         CASE A.JOIN_TYPE
              WHEN 'F' THEN 'FULL '
              WHEN 'L' THEN 'LEFT '
              WHEN 'S' THEN 'STAR '
              ELSE          '     '                   END AS "JOIN",

         A.SORTN_UNIQ CONCAT A.SORTN_JOIN CONCAT A.SORTN_ORDERBY
           CONCAT A.SORTN_GROUPBY                         AS UJOG,
         A.SORTC_UNIQ CONCAT A.SORTC_JOIN CONCAT A.SORTC_ORDERBY
           CONCAT A.SORTC_GROUPBY                          AS UJOC,

         A.QBLOCK_TYPE AS QBTYPE,

         CASE WHEN A.TABLE_TYPE IS NULL THEN '      '
           WHEN A.TABLE_TYPE = 'B' THEN 'BUFFER'
           WHEN A.TABLE_TYPE = 'C' THEN 'CTE   '
           WHEN A.TABLE_TYPE = 'F' THEN 'TBLFNC'
           WHEN A.TABLE_TYPE = 'M' THEN 'MQT   '
           WHEN A.TABLE_TYPE = 'Q' THEN 'VMQT  '
           WHEN A.TABLE_TYPE = 'R' THEN 'RC#CTE'
           WHEN A.TABLE_TYPE = 'T' THEN 'TABLE/'
           WHEN A.TABLE_TYPE = 'W' THEN 'WRKFIL'
           ELSE A.TABLE_TYPE                          END AS TTYP,

         A.TSLOCKMODE                                     AS LCK,

         CASE A.PARALLELISM_MODE
           WHEN 'C' THEN 'CPU '
           WHEN 'I' THEN 'I-O '
           WHEN 'X' THEN 'PLEX'
           ELSE          '    '                       END AS PARAL,

         STRIP(DIGITS(A.ACCESS_DEGREE), LEADING, '0') CONCAT ' '
           CONCAT STRIP(DIGITS(A.JOIN_DEGREE), LEADING, '0')
                                                          AS AJ_DEG,

         STRIP(DIGITS(A.ACCESS_PGROUP_ID), LEADING, '0') CONCAT ' '
           CONCAT STRIP(DIGITS(A.JOIN_PGROUP_ID), LEADING, '0')
                                                          AS PG_DEG,

         STRIP(DIGITS(A.MERGE_JOIN_COLS), LEADING, '0') AS MJC,

         CASE A.PREFETCH
           WHEN 'S' THEN 'SEQ '
           WHEN 'L' THEN 'LIST'
           WHEN 'D' THEN 'DYN '
           ELSE          '    '                       END AS PREFETCH,

         STRIP(DIGITS(A."QUERYNO"), LEADING, '0')         AS QNO,
         SUBSTR(DIGITS(A.QBLOCKNO), 4, 2) CONCAT ' '
           CONCAT SUBSTR(DIGITS(A.PLANNO), 4, 2)
                                                          AS BL_PL,
         A.PARENT_QBLOCKNO,
         A.QBLOCKNO, A.PLANNO, A.TNAME, A.ACCESSNAME, A.OPTHINT,
         A.HINT_USED, A.APPLNAME, A."COLLID", A.VERSION,
         A.TIMESTAMP, A.BIND_TIME, A."QUERYNO", A.MIXOPSEQ, A.TABNO,
         A.CORRELATION_NAME, A.COLUMN_FN_EVAL, A.SORTC_PGROUP_ID,
         A.SORTN_PGROUP_ID, A.PAGE_RANGE, A.WHEN_OPTIMIZE,
         A.TABLE_ENCODE, A.TABLE_SCCSID, A.ROUTINE_ID, A.CTEREF,
         A.STMTTOKEN,
--       S.COST_CATEGORY, S.PROCMS, S.PROCSU, S.REASON
         'A' AS COST_CATEGORY, 1 AS PROCMS, 1 AS PROCSU, ' ' AS REASON

      FROM A540769.PLAN_TABLE A
--    JOIN
--         (SELECT B.PROGNAME AS BPROGNAME,
--                 B.COLLID AS BCOLLID,
--                 MAX(B.BIND_TIME) BBIND_TIME
--            FROM A540769.PLAN_TABLE B
--            GROUP BY B.PROGNAME, B.COLLID) AS N1
--      ON A.PROGNAME = N1.BPROGNAME
--     AND A.BIND_TIME = N1.BBIND_TIME
--     AND A.COLLID    = N1.BCOLLID
--    LEFT OUTER JOIN A540769.DSN_STATEMNT_TABLE S
--      ON S."COLLID" = A."COLLID"
--     AND S.APPLNAME = A.APPLNAME
--     AND S.PROGNAME = A.PROGNAME
--     AND S."QUERYNO" = A."QUERYNO"
--     AND S.EXPLAIN_TIME = A.BIND_TIME
;
//
-------------------------------------------------------------------------
CREATE VIEW A540769.PLAN_VIEW6_CMN AS
  SELECT SUBSTR(A.PROGNAME, 1, 8) AS PROGNAME,
         SUBSTR(DIGITS(A."QUERYNO"), 5) AS STMT,

         CASE WHEN A.METHOD = 3
              THEN '       '
--            ELSE SUBSTR(CHAR(S.PROCSU), 1, 7) END AS SUNITS,
              ELSE '1      '
                                                      END AS SUNITS,

         CASE WHEN A.PRIMARY_ACCESSTYPE = 'D' THEN 'DIR.ROW'
              WHEN A.ACCESSTYPE = 'I ' THEN 'IX-SCAN'
              WHEN A.ACCESSTYPE = 'I1' THEN 'IX-ONEF'
              WHEN A.ACCESSTYPE = 'M ' THEN 'MULT-IX'
              WHEN A.ACCESSTYPE = 'MX' THEN 'IX-SC.X'
              WHEN A.ACCESSTYPE = 'MI' THEN 'IX-SC.I'
              WHEN A.ACCESSTYPE = 'MU' THEN 'IX-SC.U'
              WHEN A.ACCESSTYPE = 'N ' THEN 'IX-INLI'
              WHEN A.ACCESSTYPE = 'R ' THEN 'TS-SCAN'
              WHEN A.ACCESSTYPE = 'RW' THEN 'WF-SCAN'
              WHEN A.ACCESSTYPE = 'T ' THEN 'IX-SPRS'
              WHEN A.ACCESSTYPE = 'V ' THEN 'BUFFERS'
              WHEN A.ACCESSTYPE = '  ' THEN '       '
                                       ELSE '       ' END AS ACCESS,

         CASE WHEN A.PRIMARY_ACCESSTYPE = 'D' THEN '            '
           WHEN A.ACCESSTYPE = 'R  ' THEN '            '
           ELSE SUBSTR(A.ACCESSNAME, 1, 12)           END AS "INDEX",

         CASE WHEN A.TNAME = ' ' THEN '            '
              ELSE SUBSTR(A.TNAME, 1, 12)             END AS "TABLE",

         SUBSTR(A.CORRELATION_NAME, 1, 5)                 AS CORR,
         CASE WHEN A.METHOD = 3         THEN '  '
              WHEN A.ACCESSTYPE = 'R '  THEN '  '
              WHEN A.QBLOCK_TYPE = 'INSERT' THEN '  '
              ELSE SUBSTR(DIGITS(A.MATCHCOLS), 5, 1)  END AS MC,

         CASE WHEN A.INDEXONLY = 'Y' THEN 'XO'
              ELSE '  '                               END AS XO,

         CASE A.METHOD
              WHEN 0 THEN '0     '
              WHEN 1 THEN 'NLJOIN'
              WHEN 2 THEN 'SMJOIN'
              WHEN 3 THEN 'SORT  '
              WHEN 4 THEN 'HYJOIN'
              ELSE CHAR(A.METHOD)                     END AS METHOD,

         CASE A.JOIN_TYPE
              WHEN 'F' THEN 'FULL '
              WHEN 'L' THEN 'LEFT '
              WHEN 'S' THEN 'STAR '
              ELSE          '     '                   END AS "JOIN",

         A.SORTN_UNIQ CONCAT A.SORTN_JOIN CONCAT A.SORTN_ORDERBY
           CONCAT A.SORTN_GROUPBY                         AS UJOG,
         A.SORTC_UNIQ CONCAT A.SORTC_JOIN CONCAT A.SORTC_ORDERBY
           CONCAT A.SORTC_GROUPBY                          AS UJOC,

         A.QBLOCK_TYPE AS QBTYPE,

         CASE WHEN A.TABLE_TYPE IS NULL THEN '      '
           WHEN A.TABLE_TYPE = 'B' THEN 'BUFFER'
           WHEN A.TABLE_TYPE = 'C' THEN 'CTE   '
           WHEN A.TABLE_TYPE = 'F' THEN 'TBLFNC'
           WHEN A.TABLE_TYPE = 'M' THEN 'MQT   '
           WHEN A.TABLE_TYPE = 'Q' THEN 'VMQT  '
           WHEN A.TABLE_TYPE = 'R' THEN 'RC#CTE'
           WHEN A.TABLE_TYPE = 'T' THEN 'TABLE/'
           WHEN A.TABLE_TYPE = 'W' THEN 'WRKFIL'
           ELSE A.TABLE_TYPE                          END AS TTYP,

         A.TSLOCKMODE                                     AS LCK,

         CASE A.PARALLELISM_MODE
           WHEN 'C' THEN 'CPU '
           WHEN 'I' THEN 'I-O '
           WHEN 'X' THEN 'PLEX'
           ELSE          '    '                       END AS PARAL,

         STRIP(DIGITS(A.ACCESS_DEGREE), LEADING, '0') CONCAT ' '
           CONCAT STRIP(DIGITS(A.JOIN_DEGREE), LEADING, '0')
                                                          AS AJ_DEG,

         STRIP(DIGITS(A.ACCESS_PGROUP_ID), LEADING, '0') CONCAT ' '
           CONCAT STRIP(DIGITS(A.JOIN_PGROUP_ID), LEADING, '0')
                                                          AS PG_DEG,

         STRIP(DIGITS(A.MERGE_JOIN_COLS), LEADING, '0') AS MJC,

         CASE A.PREFETCH
           WHEN 'S' THEN 'SEQ '
           WHEN 'L' THEN 'LIST'
           WHEN 'D' THEN 'DYN '
           ELSE          '    '                       END AS PREFETCH,

         STRIP(DIGITS(A."QUERYNO"), LEADING, '0')         AS QNO,
         SUBSTR(DIGITS(A.QBLOCKNO), 4, 2) CONCAT ' '
           CONCAT SUBSTR(DIGITS(A.PLANNO), 4, 2)
                                                          AS BL_PL,
         A.PARENT_QBLOCKNO,
         A.QBLOCKNO, A.PLANNO, A.TNAME, A.ACCESSNAME, A.OPTHINT,
         A.HINT_USED, A.APPLNAME, A."COLLID", A.VERSION,
         A.TIMESTAMP, A.BIND_TIME, A."QUERYNO", A.MIXOPSEQ, A.TABNO,
         A.CORRELATION_NAME, A.COLUMN_FN_EVAL, A.SORTC_PGROUP_ID,
         A.SORTN_PGROUP_ID, A.PAGE_RANGE, A.WHEN_OPTIMIZE,
         A.TABLE_ENCODE, A.TABLE_SCCSID, A.ROUTINE_ID, A.CTEREF,
         A.STMTTOKEN,
--       S.COST_CATEGORY, S.PROCMS, S.PROCSU, S.REASON
         'A' AS COST_CATEGORY, 1 AS PROCMS, 1 AS PROCSU, ' ' AS REASON

      FROM A540769.PLAN_TABLE A
--    JOIN
--         (SELECT B.PROGNAME AS BPROGNAME,
--                 B.COLLID AS BCOLLID,
--                 MAX(B.BIND_TIME) BBIND_TIME
--            FROM A540769.PLAN_TABLE B
--            GROUP BY B.PROGNAME, B.COLLID) AS N1
--      ON A.PROGNAME = N1.BPROGNAME
--     AND A.BIND_TIME = N1.BBIND_TIME
--     AND A.COLLID    = N1.BCOLLID
--    LEFT OUTER JOIN A540769.DSN_STATEMNT_TABLE S
--      ON S."COLLID" = A."COLLID"
--     AND S.APPLNAME = A.APPLNAME
--     AND S.PROGNAME = A.PROGNAME
--     AND S."QUERYNO" = A."QUERYNO"
--     AND S.EXPLAIN_TIME = A.BIND_TIME
;
-------------------------------------------------------------------------
  CREATE VIEW  A540769.PLAN_VIEW7 AS
    SELECT (
             SUBSTR(DIGITS(A."QUERYNO"),5) || ' ' || -- STMT

             QBLOCK_TYPE                   || ' ' || -- TYPE

             CASE WHEN METHOD = 3 THEN '      '
                  ELSE CHAR(S.PROCMS) END  ||        -- MSEC

             CASE WHEN PRIMARY_ACCESSTYPE = 'D' THEN 'DIR.ROW'
                  WHEN ACCESSTYPE = 'I '        THEN 'IX-SCAN'
                  WHEN ACCESSTYPE = 'I1'        THEN 'IX-ONE '
                  WHEN ACCESSTYPE = 'R '        THEN 'TS-SCAN'
                  WHEN ACCESSTYPE = 'N '        THEN 'IX-ACC '
                  WHEN ACCESSTYPE = 'M '        THEN 'IX-SC.M'
                  WHEN ACCESSTYPE = 'MX'        THEN 'IX-SC.X'
                  WHEN ACCESSTYPE = 'MI'        THEN 'IX-SC.I'
                  WHEN ACCESSTYPE = 'MU'        THEN 'IX-SC.U'
                  WHEN ACCESSTYPE = 'T'         THEN 'IX-SPRS'
                  WHEN ACCESSTYPE = ' '         THEN '       '
                  ELSE NULL END            || ' ' || -- ACCESS

             CASE WHEN ACCESSTYPE = 'R'         THEN '            '
                  WHEN PRIMARY_ACCESSTYPE = 'D' THEN '            '
                  ELSE SUBSTR(ACCESSNAME,1,12) END || ' ' ||
                                                     -- "INDEX"

             SUBSTR(TNAME,1,18)        || ' ' ||     -- TABLE

             CASE WHEN TABLE_TYPE IS NULL THEN '      '
                  ELSE TABLE_TYPE END  || ' ' ||     -- TTYP


             CASE WHEN METHOD = 3         THEN '  '
                  WHEN ACCESSTYPE = 'R '  THEN '  '
                  ELSE SUBSTR(DIGITS(MATCHCOLS), 4, 2)
                                   END || ' ' ||     -- MC_O

             CASE WHEN INDEXONLY='Y'      THEN 'Y  '
                  ELSE                         '   '
                                   END || ' ' ||     -- IXO

             CASE WHEN OPTHINT<>' '       THEN '*'
                  ELSE                         ' '
                                   END ||            -- HINT

             CASE WHEN HINT_USED<>' '     THEN '*'
                  ELSE                         ' '
                                   END               -- HINT_USED
           ) AS TEXT,

           CASE METHOD
             WHEN 0 THEN '      '
             WHEN 1 THEN 'NLJOIN'
             WHEN 2 THEN 'SMJOIN'
             WHEN 3 THEN 'SORT  '
             WHEN 4 THEN 'HYJOIN'
             ELSE NULL
             END AS METHOD,

           CASE JOIN_TYPE WHEN 'F' THEN 'FULL ' WHEN 'L' THEN 'LEFT '
           WHEN 'S' THEN 'STAR ' ELSE ' ' END AS "JOIN",
           SORTN_UNIQ CONCAT SORTN_JOIN CONCAT SORTN_ORDERBY CONCAT
           SORTN_GROUPBY AS UJOG,
           SORTC_UNIQ CONCAT SORTC_JOIN CONCAT SORTC_ORDERBY CONCAT
           SORTC_GROUPBY AS UJOC, TSLOCKMODE AS LCK,
           SUBSTR(CORRELATION_NAME, 1, 4) AS CORR,

           CASE PARALLELISM_MODE
             WHEN 'C' THEN 'CPU'
             WHEN 'I' THEN 'I-O'
             WHEN 'X' THEN 'SYSPLEX'
             ELSE NULL
             END  AS PARAL,

           STRIP(DIGITS(ACCESS_DEGREE), LEADING, '0') CONCAT ' '
           CONCAT STRIP(DIGITS(JOIN_DEGREE), LEADING, '0') AS AJ_DEG,

           STRIP(DIGITS(ACCESS_PGROUP_ID), LEADING, '0') CONCAT ' '
           CONCAT STRIP(DIGITS(JOIN_PGROUP_ID), LEADING, '0') AS
           PG_DEG,
           STRIP(DIGITS(MERGE_JOIN_COLS), LEADING, '0') AS MC,

           PREFETCH AS PRE,

           STRIP(DIGITS(A."QUERYNO"), LEADING, '0') AS QNO,

           SUBSTR(DIGITS(QBLOCKNO), 4, 2) CONCAT ' ' CONCAT SUBSTR(
           DIGITS(PLANNO), 4, 2) AS BL_PL,

           A.PARENT_QBLOCKNO,
           A.QBLOCKNO,
           A.PLANNO,
           A.TNAME,
           A.ACCESSNAME,
           A.OPTHINT,
           A.HINT_USED,
           A.APPLNAME,
           A."COLLID",
           A.PROGNAME,
           A.VERSION,

           A.BIND_TIME,
           A.TIMESTAMP,
           A."QUERYNO",
           A.MIXOPSEQ,
           S.COST_CATEGORY,
           S.PROCMS,
           S.PROCSU,
           S.REASON

      FROM A540769.PLAN_TABLE A
      JOIN A540769.DSN_STATEMNT_TABLE S
        ON S."COLLID"     = A."COLLID"
       AND S.APPLNAME     = A.APPLNAME
       AND S.PROGNAME     = A.PROGNAME
       AND S."QUERYNO"    = A."QUERYNO"
       AND S.EXPLAIN_TIME = A.BIND_TIME
;
-------------------------------------------------------------------------
CREATE VIEW A540769.PLAN_VIEW9 AS
  SELECT A.PROGNAME, A.VERSION, S.PROCMS
    FROM A540769.PLAN_TABLE A
    LEFT OUTER JOIN A540769.DSN_STATEMNT_TABLE S
      ON S."COLLID" = A."COLLID"
     AND S.APPLNAME = A.APPLNAME
     AND S.PROGNAME = A.PROGNAME
     AND S.QUERYNO  = A.QUERYNO
     AND S.EXPLAIN_TIME = A.BIND_TIME
;
-------------------------------------------------------------------------
commit
;