oracle 10g中如何将多列查询成更多列
Posted
技术标签:
【中文标题】oracle 10g中如何将多列查询成更多列【英文标题】:How to query multiple columns into more columns in oracle 10g 【发布时间】:2010-06-21 01:04:31 【问题描述】:这可能已经在某个地方得到了回答,但由于我认为我遗漏了关键术语,因此无法搜索它。
我想要做的是将多列转换为更多列
所以我的查询当前返回:
col1 | col2 | col3
__________________________
a | x | 1
b | y | 1
c | z | 1
d | x | 2
e | y | 2
f | z | 2
g | x | 3
h | y | 3
i | z | 3
我想要做的是再次查询它以获得:
col 1 | col 2 (shows column 1 and 2 where col3 is equal to 1)
col 3 | col 4 (shows column 1 and 2 where col3 is equal to 2)
col 5 | col 6 (shows column 1 and 2 where col3 is equal to 3)
希望这是有道理的。没有发布我的查询以获得第一组结果,因为它非常大(其中有几个联合)并且认为没有必要。如果有帮助,我会将其缩减为更易于管理的内容并发布。
编辑: 让我尝试更好地解释。在新查询中,我想显示 6 列。前两列将是 从“原始查询”中选择 col1、col2,其中 col3 = 1
后两列(col3 和 col4)将是 从 col3 = 2 的“原始查询”中选择 col1、col2。
最后两列将是(col5 和 col6) 从 col3 = 3 的“原始查询”中选择 col1、col2。
【问题讨论】:
您的问题对于您想要返回的内容不够清楚。当第 1 列和第 2 列等于 2 时,“col 3 | col 4”之间没有任何相关性? 您可能还想添加要加入或排队的列。到目前为止,我可以从您的问题中猜到您可以使用 WITH 然后加入 3 个子查询(每个 col3 值 1 个) 这将有助于获得有关数据本身性质的更多详细信息,这将需要如此复杂的查询请求。关系模型不重视列的顺序。它们只是实体的一组无序属性。因此,任何“col1 = col2”、“col3 = col4...”的请求都可能表明数据库架构有问题。 数据库中没有表有名为 col1 的列,为了简单起见,我只是将它们命名为在查询中给 *** 的名称。 【参考方案1】:好的,我想出了一个方法(在我看来不是特别优雅,但它确实有效)。将上一个查询添加为视图 然后做了::
select a.col1, a.col2, b.col1, b.col2, c.col1, c.col2
from view a, view b, view c
where a.col3 = 1
and b.col3 = 2
and c.col3 = 3
为了简单起见,我还必须链接我从这里排除的主键。我认为这几乎就是马铃薯皮的建议。
感谢您的帮助,如果有人想到更好的方法,请提出建议,因为我目前非常业余并且很清楚这一事实
【讨论】:
以上是关于oracle 10g中如何将多列查询成更多列的主要内容,如果未能解决你的问题,请参考以下文章
oracle 10g 在查询结果列中添加rownum列,查询出的条数增多。