> if no groups have access > READ anymore, the dataset are listed with an empty list.
SUBSELECT only reduces the ACL list, but does not affect the selection of the profile. If you know that you want to exclude some groups, you have to tweak the SELECT command. You can start with changing the SELECT to
select class=dataset acl(access>read and id<>(group1,group2)),
(mask=sys1.*.** or mask=sym*l.*.** or mask=sym*p.*.** or mask=sym*g.*.**)
This checks EACH ENTRY in the ACL to have UPDATE or more, AND not be one of your exempted groups. If any of the entries in the ACL meets this requirement, the whole profile is selected (including the permits for group1 and group2).
Now you have to sort your output filter, using the SUBSELECT that Jeroen provided.