SELECT *
FROM (
select data.dataid, data.name, DATA.NEW_DT, DATA.NEW_SUB_DT, MAX(OLD_DT) OLD_DT, MAX(OLD_SUB_DT) OLD_SUB_DT from (
select doc.dataid, doc.name,
REGEXP_REPLACE(doc.NAME, ' *[\].*$','') NEW_DT,
REGEXP_REPLACE(REGEXP_REPLACE(doc.NAME, '^[^\]*[\] *',''), ' *[\].*$', '') NEW_SUB_DT,
decode(la.attrid, 15, la.valstr, null) OLD_DT,
decode(la.attrid, 16, la.valstr, null) OLD_SUB_DT
from dtree doc
join dtreeancestors da on doc.dataid = da.dataid and da.ancestorid = 304086 and doc.subtype = 144
join llattrdata la on la.defid = 45942 and la.attrid in (15,16) and la.id = doc.dataid and la.vernum = doc.versionnum
) data
group by data.dataid, data.name, DATA.NEW_DT, DATA.NEW_SUB_DT
) DATA
WHERE DATA.NEW_DT <> DATA.OLD_DT OR DATA.NEW_SUB_DT <> DATA.OLD_SUB_DT OR DATA.OLD_DT IS NULL OR DATA.OLD_SUB_DT IS NULL
;
Comments