zOs/SQL/CATRUPD3

declare global temporary table session.st
    as (select creator cr, name tb, tbName db, tsName ts,
               statstime lim
           from sysibm.sysTables
       ) with no data on commit preserve rows
;
declare global temporary table session.sx
    as (select creator cr, name ix, tbCreator tbCr, tbName tb,
           statstime lim
           from sysibm.sysIndexes
       ) with no data on commit preserve rows
;
insert into session.st
    select creator, name, dbName, tsName, '0001-01-01-00.00.00'
        from sysibm.sysTables
        where dbName like 'M%'
;
update session.st st
   set lim  = ( select max('0002-01-01-00.00.00',
                          max(statstime)) - 169 hours
                  from sysibm.sysColumns co
                  where co.tbCreator = st.cr and co.tbName = st.tb)
;
insert into session.sx
    select creator, name, tbCreator, tbName, lim
        from sysibm.sysIndexes ix join session.st st
        on ix.tbCreator = st.cr and ix.tbName = st.tb
;
with old (tb, cat, stats) as
(
select tb, 'columns', statstime
              from sysibm.sysColumns co join session.st st
                on co.tbCreator = st.cr and co.tbName = st.tb
                and statsTime < lim
                and statsTime > '0001-01-01-00.00.00.00000'
union all select tb, 'colDist', statstime
              from sysibm.sysColDist cd join session.st st
                on cd.tbOwner = st.cr and cd.tbName = st.tb
                  and cd.statstime < lim
union all select tb, 'colDistStats', statstime
              from sysibm.sysColDistStats cds join session.st st
                on cds.tbOwner = st.cr and cds.tbName = st.tb
                  and statstime < lim
)
select tb, cat, count(*), min(stats),  max(stats)
    from old
    group by tb, cat
    order by tb, cat
;;;