Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle - diviser une seule ligne en plusieurs lignes

Le plus simple est avec 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;

Si vous voulez le type de test dans la sortie :

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 prend également en charge le unpivot opérateur qui fait quelque chose de similaire. Si vous avez une très grande table et que vous vous souciez des performances, unpivot ou une méthode utilisant join peut fonctionner.