SPLText
REPLACE PROCEDURE  SYSSTP.COL_COUT
( IN DATABASENAME VARCHAR(30)
, IN TABLENAME VARCHAR(30)
, IN COLUMNNAME VARCHAR(30)
)
/**************************************************/
/*  NAME:  COL_COUT - COLUMN_COUNTER            */
/* DESC - INSERTS COLUMN COUNTS INTO TABLE FOR COMPRESSION STUDY   */
/* INPUTS:                                        */
/* DATABASENAME                                   */
/* HISTORY:                                       */
/* 12/22/2003            CREATED.                 */               
/* 1/7/2004              Cleaned up to add lessons learned */
/**************************************************/
      
     
COLUMN_LABEL:      BEGIN
   
DELETE FROM DBA.T_GLBL_CMPR_CAND;        
      
CALL DBC.SYSEXECSQL (
'INSERT INTO DBA.T_GLBL_CMPR_CAND (DATABASENAME, TABLENAME, COLUMNNAME
, VAL_TXT, COUT_NBR) SELECT '''
|| TRIM(:DATABASENAME) || ''','''
|| TRIM(:TABLENAME) || ''','''
|| TRIM(:COLUMNNAME) || ''','
|| ' CAST( ' || :COLUMNNAME || ' AS VARCHAR(3000))'
|| ',  COUNT(*) FROM ' 
|| TRIM(:DATABASENAME) 
|| '.' 
|| TRIM(:TABLENAME) 
|| ' GROUP BY 1,2,3,4;' ) ;

UPDATE DBA.T_GLBL_CMPR_CAND
FROM
(SELECT DATABASENAME, TABLENAME, COLUMNNAME, VAL_TXT
, RANK() OVER 
(PARTITION BY DATABASENAME, TABLENAME, COLUMNNAME ORDER BY COUT_NBR DESC)
FROM DBA.T_GLBL_CMPR_CAND
WHERE DBA.T_GLBL_CMPR_CAND.DATABASENAME = :DATABASENAME
AND DBA.T_GLBL_CMPR_CAND.TABLENAME = :TABLENAME
AND DBA.T_GLBL_CMPR_CAND.COLUMNNAME = :COLUMNNAME
AND DBA.T_GLBL_CMPR_CAND.COMPILE_DT = DATE
 ) A(DATABASENAME, TABLENAME, COLUMNNAME, VAL_TXT, RANK_NBR)
SET RANK_NBR =  A.RANK_NBR
WHERE DBA.T_GLBL_CMPR_CAND.DATABASENAME = A.DATABASENAME
AND DBA.T_GLBL_CMPR_CAND.TABLENAME = A.TABLENAME
AND DBA.T_GLBL_CMPR_CAND.COLUMNNAME = A.COLUMNNAME
AND DBA.T_GLBL_CMPR_CAND.VAL_TXT = A.VAL_TXT
AND DBA.T_GLBL_CMPR_CAND.DATABASENAME = :DATABASENAME
AND DBA.T_GLBL_CMPR_CAND.TABLENAME = :TABLENAME
AND DBA.T_GLBL_CMPR_CAND.COLUMNNAME = :COLUMNNAME
AND DBA.T_GLBL_CMPR_CAND.COMPILE_DT = DATE;

INSERT INTO DBA.T_CMPR_CAND SELECT * FROM DBA.T_GLBL_CMPR_CAND;

END COLUMN_LABEL;
 
