2015-09-15 4 views
0

У меня следующее соотношение:извлечение данных из ненормированной вертикально упорядоченной таблицы

employeevalue(id, name, value, code) 

id  name  value  code 

101  bobby  150   100 
101  bobby  12   150 
101  bobby  14.6  200 
102  mary  189   100 
102  mary  128   150 
102  mary  112   200 
103  john  112   100 
103  john  13   150 
103  john  76   200 

где код 100 значение1, 150 и 200 значение2 является значение3. Как я могу написать инструкцию SQL, чтобы извлечь из этой таблицы следующее:

id  name  value1  value2  value3 
101  bobby  150   12   14.6 
102  mary  189   128   112 
103  john  112   13   76 
+2

Некоторой СУБД позволяет шарнирные запросы, но вы не указали ваши. –

+0

Какая СУБД вы используете? Postgres? Oracle? –

+0

извините, im используя oracle 10 –

ответ

1

Вы можете сделать это с помощью условной агрегации:

select id, 
     max(case when code = 100 then value end) as value1, 
     max(case when code = 150 then value end) as value2, 
     max(case when code = 200 then value end) as value3 
from table t 
group by id;