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如何将列转换为行

oracle 多列 列转行

oracle 10g 在查询结果列中添加rownum列,查询出的条数增多。

sql查询 表中一列不重复 显示多列

C#将查询返回的数据(一行多列)怎么转换成一列多行dataTable?

SQL把查询出的一个列转换成行