zOs/SQL/PARTJOIN
select char(c.name,20) ,
c.creator, char(' '),
c.dbname, char(' '),
c.tsname, char(' '),
char(c.p_part) , char(' '),
char(c.p_limit) , char(' '),
char(coalesce(sum(cnt), 0)) tst_all, char(' '),
char(coalesce(sum(tstDis), 0)) tst_dist, char(' '),
char(coalesce(
char(min(tid150md)) || ' '||
char(max(tid150md)) || ' ' ||
char(min(tstMin)) || ' ' ||
char(max(tstMax)) || ' '
, '<<null>>'))
from
( select
t.name, t.creator, t.dbname, t.tsname,
p.partition p_part, int(p.limitkey) p_limit,
q.partition q_part, int(q.limitkey) q_limnu,
case when q.limitkey is null then -9999 else int(q.limitkey
end q_limit
from sysibm.systables t
join sysibm.systablepart p
on t.tsname = p.tsname and t.dbname = p.dbname
left join sysibm.systablepart q
on p.tsname = q.tsname and p.dbname = q.dbname
and p.partition - 1 = q.partition
where t.name = 'TID150A1' and t.creator = 'OA1P' ) c
left join
( select tid150md, count(*) cnt,
count(distinct tid150tst) tstDis,
min(tid150tst) tstMin, max(tid150tst) tstMax
from OA1P.tid150a1
group by tid150md
) d
on d.tid150md <= c.p_limit and d.tid150md > c.q_limit
group by c.p_limit, c.q_limit, c.p_part, c.q_part,
c.name, c.creator, c.dbname, c.tsname
order by c.p_limit, c.q_limit
;