U kunt de gegevens op deze manier draaien in elke versie van Oracle.
SELECT id,
MAX( CASE WHEN key = 'name' THEN value ELSE null END ) name,
MAX( CASE WHEN key = 'height' THEN value ELSE null END ) height,
MAX( CASE WHEN key = 'awesomeness' THEN value ELSE null END ) awesomeness
FROM facts
WHERE id IN (1,2,3)
GROUP BY id
Als u 11g gebruikt, kunt u ook de PVOT
. gebruiken telefoniste.
Als dit echter representatief is voor uw gegevensmodel, zal dat soort gegevensmodel met entiteitskenmerken over het algemeen nogal inefficiënt zijn. Over het algemeen zou je veel beter geholpen zijn met een tabel met kolommen voor name
, height
, awesomeness
, enz.