Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como provar a equivalência de consulta SQL


O melhor que você pode fazer é comparar as 2 saídas de consulta com base em um determinado conjunto de entradas procurando por diferenças. Dizer que eles sempre retornarão os mesmos resultados para todas as entradas realmente depende dos dados.

Para Oracle, uma das melhores, se não a melhor abordagem (muito eficiente) está aqui (Ctrl +F Comparando o conteúdo de duas tabelas):
http://www.oracle.com/technetwork/issue-archive/2005/05-jan/o15asktom-084959.html

O que se resume a:
select c1,c2,c3, 
       count(src1) CNT1, 
       count(src2) CNT2
  from (select a.*, 
               1 src1, 
               to_number(null) src2 
          from a
        union all
        select b.*, 
               to_number(null) src1, 
               2 src2 
          from b
       )
group by c1,c2,c3
having count(src1) <> count(src2);