На которой я почему-то залипаю (при том что знаю решение):
Есть таблица:
create table t
(id number,
field_name varchar2(20),
string_value varchar2(20),
number_value number);
insert into t (id, field_name, string_value, number_value)
values (1, ‘Name’, ‘John’, null);
insert into t (id, field_name, string_value, number_value)
values (1, ‘Surname’, ‘Smith’, null);
insert into t (id, field_name, string_value, number_value)
values (1, ‘Salary’, null, 100);
insert into t (id, field_name, string_value, number_value)
values (2, ‘Name’, ‘Bill’, null);
insert into t (id, field_name, string_value, number_value)
values (2, ‘Surname’, ‘Dow’, null);
insert into t (id, field_name, string_value, number_value)
values (2, ‘Salary’, null, 200);
commit;
надо ее “развернуть” на 90 градусов.
решение простое:
select t.id,
max(decode(field_name, ‘Name’, string_value)) Name,
max(decode(field_name, ‘Surname’, string_value)) Surname,
max(decode(field_name, ‘Salary’, number_value)) Salary
from t
group by t.id;