Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle SQL - Грабване на стойности от множество редове

Можете да завъртите данните по този начин във всяка версия на 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

Ако използвате 11g, можете също да използвате PVOT оператор.

Ако обаче това е представително за вашия модел на данни, този вид модел на данни с атрибут на обект обикновено ще бъде доста неефективен. Като цяло бихте се обслужвали много по-добре с таблица, която има колони за name , height , awesomeness и т.н.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-19011:Буферът на символен низ е твърде малък

  2. проблем с хибернация на oracle10g

  3. Използване на псевдоним в клауза WHERE

  4. NHibernate Oracle - Не може да се зареди DLL „OraOps10w.dll“

  5. Как да видя изходен параметър на CLOB в TOAD от съхранена процедура на Oracle?