Я работаю с помощью функции Pivot, если можно «заполнить» данные, не включенные в основную таблицу. Моя таблица включает в себя следующие данные:SQL Pivot с неуравновешенными данными
create table tmpData (objID INT, colID varchar(5), value varchar(50));
insert into tmpData (objId, colId, value) values(21, 'col1', 'a value');
insert into tmpData (objId, colId, value) values(21, 'col2', 'col2_1');
insert into tmpData (objId, colId, value) values(21, 'col2', 'col2_2_x'); -- a second 'value' for col_2
insert into tmpData (objId, colId, value) values(21, 'col3', 'col3_1');
insert into tmpData (objId, colId, value) values(22, 'col1', 'another value');
insert into tmpData (objId, colId, value) values(22, 'col2', 'col2_2');
insert into tmpData (objId, colId, value) values(22, 'col3', 'col3_2');
с функцией Pivot
select
*
from (
select
objID
, colID
, value
from tmpData)
t
PIVOT (MAX(value) for colID in ([col1], [col2], [col3])) pivottable;
я получаю только одно значение (макс) для ObjId = 21 в col2:
objID col1 col2 col3
21 a value col2_2_x col3_1
22 another value col2_2 col3_2
Что мне нравится получить все значения И заполнить не заданные данные для objID = 21 в col1 и col3:
objID col1 col2 col3
21 a value col2_2 col3_1
21 a value col2_2_x col3_1
22 another value col2_2 col3_2
Возможно ли это с помощью функции Pivot или другим способом? Заранее благодарим Joerg
Какие СУБД вы используете? Синтаксис выглядит как SQL Server. –
в конце должен работать для SQL Server и ORACLE – DickerXXL