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

Oracle SQL -- Capturando valores de várias linhas


Você pode dinamizar os dados assim em qualquer versão do 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

Se você estiver usando 11g, também poderá usar o PVOT operador.

No entanto, se isso for representativo do seu modelo de dados, esse tipo de modelo de dados de atributo de entidade geralmente será bastante ineficiente. Você geralmente seria muito melhor servido com uma tabela que tivesse colunas para name , height , awesomeness , etc