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

Oracle - divide uma única linha em várias linhas


A maneira mais simples é com uma 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 você quiser o tipo de teste na saída:
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;

O Oracle 11 também suporta o unpivot operador que faz algo semelhante. Se você tem uma tabela muito grande e se preocupa com o desempenho, unpivot ou um método usando join pode trabalhar.