sql >> Base de Datos >  >> RDS >> Oracle

Oracle:divide una sola fila en varias filas

La forma más sencilla es con una 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;

Si desea el tipo de prueba en la salida:

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 también es compatible con unpivot operador que hace algo similar. Si tiene una tabla realmente grande y le preocupa el rendimiento, unpivot o un método usando join puede funcionar.