>Can the question be rephrased as you being interested in which sets are
>identical, Elias? If I understand things correctly,
>I would assume "double negation" to be the "simple" answer you're looking for:
>
>with tmp(id) as
>(select distinct id from CRITICALPARAMVALS)
>
>select t.id, t2.id
>from tmp t
>join tmp t2 on t.id < t2.id
>where not exists(select * from CRITICALPARAMVALS a
> where t.id = a.id
> and not exists(select * from CRITICALPARAMVALS b
> where t2.id = b.id
> and a.PARAM=b.param and (exists (select
> isequal from TEST_FLOAT_EQ(a.val, b.val, 1e-5) where ISEQUAL=1))))
Sorry, the above select returns equal sets, but also sets where B is a superset
of A. You need to add
and not exists(select * from CRITICALPARAMVALS a
where t2.id = a.id
and not exists(select * from CRITICALPARAMVALS b
where t.id = b.id
and a.PARAM=b.param and (exists (select *
from TEST_FLOAT_EQ(a.val, b.val, 1e-5) where ISEQUAL=1))))
for it to only find identical sets.
Needless to say, such a query can be a bit slow with huge tables. Moreover, I
don't know how TEST_FLOAT_EQ is implemented or why you use this rather than
a.val BETWEEN b.val - 0.00001 and b.val + 0.00001
HTH,
Set