I have found an answer which works for anyone else who may need it.
You should be able to use a join if you wrap the statement, treating it like a temp table… To do this, we need to select a single entry from “some table” and thankfully, we have dummy_table that Maximo uses to do temporary storage of blob/clob. This table will only ever have a single row in it, we have been using it for many years. Let’s have you try to put this into the “select” field of the KPI only (leave the where clause empty).
select
(
select count(workorder.wonum) from workorder
left join wostatus on workorder.wonum = wostatus.wonum
where
istask = 0
and workorder.pmnum is not null
and workorder.gmpclassification in ('gmp', 'gxp')
and (workorder.status in ('comp','close')
and (wostatus.status = workorder.status)
and wostatus.changedate > getdate()-7)
) from dummy_table