Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle:divide una singola riga in più righe

Il modo più semplice è con un union all :

select object_tested, test_date, test_a as test, test_a_result as test_result
from table t
union all
select object_tested, test_date, test_b as test, test_b_result as test_result
from table t;

Se vuoi il tipo di test nell'output:

select object_tested, test_date, 'a' as test_type, test_a as test, test_a_result as test_result
from table t
union all
select object_tested, test_date, 'b' as test_type, test_b as test, test_b_result as test_result
from table t;

Oracle 11 supporta anche unpivot operatore che fa qualcosa di simile. Se hai una tabella molto grande e ti interessano le prestazioni, unpivot o un metodo che utilizza join può funzionare.