>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

Reply via email to