有一个表基本上列出了字段名及其值,但每个属性和值都在一个单独的行中。在下例中,下表列出了产品代码及其价格。
create table attributes_list(attribute_name varchar2(50), attribute_value number);
insert into attributes_list values ('product_a_code', 10);
insert into attributes_list values ('product_b_code', 11);
insert into attributes_list values ('product_c_code', 12);
insert into attributes_list values ('product_a_price', 10.99);
insert into attributes_list values ('product_b_price', 20.99);
insert into attributes_list values ('product_c_price', 30.99);
是否可以将这些行转换为列,但我可以将价格链接到产品代码?
我知道题目不太理想,但我想不出更好的方法来回答这个问题。欢迎提出建议。
3条答案
按热度按时间pbpqsu0x1#
编写一个查询,{1}查找属性名称以''u code'结尾的所有行,{2}查找属性名称以''u price'结尾的所有行{3} 将产品名称上的两个结果集连接起来,可以通过substr()找到。
在这儿摆弄。
您可以使用regexp\u replace()—如@gmb的答案—在on子句中查找产品名称(而不是substr())。
qv7cva1a2#
您至少需要三列:
然后可以使用条件聚合:
wh6knrhe3#
如示例数据所示,如果
attribute_name
具有由产品和属性组成的固定格式(属性名称中没有下划线),可以使用正则表达式和条件聚合,如下所示: