【发布时间】:2011-12-05 12:26:14
【问题描述】:
我有以下名为 _kv 的 Oracle 10g 表:
select * from _kv
ID K V
---- ----- -----
1 name Bob
1 age 30
1 gender male
2 name Susan
2 status married
我想使用普通 SQL(不是 PL/SQL)将我的键转换为列,以便生成的表看起来像这样:
ID NAME AGE GENDER STATUS
---- ----- ----- ------ --------
1 Bob 30 male
2 Susan married
- 查询的列数应与表中存在的唯一
Ks 一样多(没有那么多) - 在运行查询之前无法知道可能存在哪些列。
- 我试图避免运行初始查询来以编程方式构建最终查询。
- 空白单元格可能是 null 或空字符串,这并不重要。
- 我使用的是 Oracle 10g,但 11g 解决方案也可以。
当你知道你的旋转列可能被称为什么时,有很多例子,但我就是找不到适用于 Oracle 的通用旋转解决方案。
谢谢!
【问题讨论】:
-
亲爱的上帝,那是...元数据库吗??
-
在阅读有关“实体属性值”表的文章时,我总是觉得很幽默:asktom.oracle.com/pls/apex/…
-
不幸的是,这不是我的设计(_kv 表就是一个例子)...我需要从该表中生成一些实时报告,任何过滤或排序的尝试都会让我发疯。
-
哇,如果您想要一个键值对数据库,那么使用 Oracle 的代价太大了。查看 Berkeley db(仍然免费,但具有讽刺意味的是由 Oracle 控制;)。更好的是,重新设计那个吸盘……不惜一切代价。祝你好运
标签: sql oracle oracle10g pivot