从名称-值对表创建Oracle视图

从名称-值对表创建Oracle视图,oracle,view,name-value,Oracle,View,Name Value,各位 我有一个oracle数据库表,它有名称-值对。一组名称-值对由row_num标识。此外,集合大小可能会有所不同 我想创建一个视图,将一组名称-值对转换为视图中的一行 我希望我的问题很清楚 请让我知道如何定义这个 为了方便起见,我给出了用于表创建和插入的示例sql 谢谢 create table name_value_pair (row_num varchar2(32), name varchar2(32),value varchar2(32)); insert into name_val

各位

我有一个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;

创建视图时可以使用查询:

select
  row_num, 
  max(decode(name, 'Col1', value)) col1, 
  max(decode(name, 'Col2', value)) col2,
  ...
from name_value_pair
group by row_num;

也许您应该重新考虑数据模型。这种数据模型很糟糕。查询无法优化,难以设置约束,几乎不可能保持数据完整性。

创建视图时可以使用查询:

select
  row_num, 
  max(decode(name, 'Col1', value)) col1, 
  max(decode(name, 'Col2', value)) col2,
  ...
from name_value_pair
group by row_num;

也许您应该重新考虑数据模型。这种数据模型很糟糕。查询无法优化,难以设置约束,几乎不可能保持数据完整性。

decode不是一个分组表达式吗?获取以下错误ora-00979:不是表达式00979的组。00000-“不是一组表达”正在工作。谢谢你,伙计。我必须看看它对于大数据集是如何伸缩的。解码不是一组表达式吗?获取以下错误ora-00979:不是表达式00979的组。00000-“不是一组表达”正在工作。谢谢你,伙计。我必须看看它如何为大型数据集扩展。欢迎来到EAV数据库设计地狱。欢迎来到EAV数据库设计地狱。