民间,
我有一个具有名称值对的oracle数据库表。 row_num标识一组名称值对。设置大小也可能有所不同。
我想创建一个视图,将视图中的一组名称值对转换为一行。
我希望我的问题很清楚
请告诉我如何定义
我为表创建提供了示例sql并为方便起见插入
由于
create table name_value_pair (row_num varchar2(32), name varchar2(32),value varchar2(32));
insert into name_value_pair values ('row1', 'Col1', 'Val11');
insert into name_value_pair values ('row1', 'Col2', 'Val12');
insert into name_value_pair values ('row1', 'Col3', 'Val13');
insert into name_value_pair values ('row1', 'Col4', 'Val14');
insert into name_value_pair values ('row1', 'Col5', 'Val15');
insert into name_value_pair values ('row2', 'Col1', 'Val21');
insert into name_value_pair values ('row2', 'Col2', 'Val22');
insert into name_value_pair values ('row2', 'Col3', 'Val23');
insert into name_value_pair values ('row2', 'Col4', 'Val24');
insert into name_value_pair values ('row2', 'Col5', 'Val25');
insert into name_value_pair values ('row3', 'Col1', 'Val31');
insert into name_value_pair values ('row3', 'Col2', 'Val32');
insert into name_value_pair values ('row3', 'Col3', 'Val33');
insert into name_value_pair values ('row3', 'Col4', 'Val34');
insert into name_value_pair values ('row3', 'Col5', 'Val35');
insert into name_value_pair values ('row4', 'Col1', 'Val41');
insert into name_value_pair values ('row4', 'Col2', 'Val42');
insert into name_value_pair values ('row4', 'Col3', 'Val43');
insert into name_value_pair values ('row4', 'Col4', 'Val44');
insert into name_value_pair values ('row4', 'Col5', 'Val45');
insert into name_value_pair values ('row5', 'Col1', 'Val51');
insert into name_value_pair values ('row5', 'Col2', 'Val52');
insert into name_value_pair values ('row5', 'Col3', 'Val53');
insert into name_value_pair values ('row5', 'Col4', 'Val54');
insert into name_value_pair values ('row5', 'Col5', 'Val55');
commit;
答案 0 :(得分:1)
您可以在创建视图时使用查询:
select
row_num,
max(decode(name, 'Col1', value)) col1,
max(decode(name, 'Col2', value)) col2,
...
from name_value_pair
group by row_num;
也许您应该重新考虑数据模型。这种数据模型很糟糕。查询无法优化,难以设置约束,几乎不可能保持数据完整性。