У меня есть таблица, в которой хранятся идентификатор, идентификатор поля и значение, которое следует вместе с ним в каждой строке. Таблица выглядит примерноСоздание одной строки из нескольких строк
create table personInfo(
personName varchar2(100),
fieldName varchar2(100),
fieldValue varchar2(100)
)
/
insert into personInfo values('Adam', 'Address', '123 Cool Street');
insert into personInfo values('Adam', 'Height', '6 foot 1 inch');
insert into personInfo values('Adam', 'Hair Color', 'Blonde');
insert into personInfo values('Bob', 'Address', '451 Fake Street');
insert into personInfo values('Bob', 'Car Model', '2016 Prius');
insert into personInfo values('Bob', 'Hair Color', 'Brown');
Теперь, если я знаю имена полей, которые я хочу, но я бы хотел, чтобы вернуть его в один ряд, а не совокупность строк, как я могу получить их обратно? Таким образом, в этом случае, я хотел бы результат
NAME ADDRESS HEIGHT HAIR COLOR CAR MODEL
___________________________________________________________________
Adam 123 Cool Street 6 foot 1 inch Blonde null
Bob 451 Fake Street null Brown 2016 Prius
Вот что у меня до сих пор
with tab as
(select personName, fieldName, fieldValue from personInfo where personName = 'Adam')
select *
from (select (select fieldValue as address from tab where fieldName = 'Address') from dual) t1,
(select (select fieldValue as height from tab where fieldName = 'Height') from dual),
(select (select fieldValue as hairColor from tab where fieldName = 'Hair Color') from dual),
(select (select fieldValue as carModel from tab where fieldName = 'Car Model') from dual);
Но это возвращает только одну строку, и без имени либо. Кто-нибудь знает, возможно ли это?
Вы должны изучить 'PIVOT' – Siyual
Знаете ли вы, что во время компиляции заданы значения' fieldName', которые вы хотите ссылаться? Или вы хотите, чтобы в результате появился дополнительный столбец, если кто-то вставил атрибут цвета для Адама? Тип данных, который у вас здесь, очень гибкий, но он будет медленным и болезненным для запроса. –
Я знаю, во время компиляции, что я ищу эти точные столбцы. – Coat