如何在oracle 10g中查询多个列到更多列

时间:2010-06-21 01:04:32

标签: sql oracle10g

这可能已经在某个地方得到解答,但在搜索时遇到了麻烦,因为我认为我缺少关键术语。

我想要做的是将多列转换为更多列

所以我的查询当前返回:

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)将为
     从'原始查询'中选择col1,col2,其中col3 = 2.

最后两列将是(col5和col6)将为
     从'原始查询'中选择col1,col2,其中col3 = 3.

1 个答案:

答案 0 :(得分:0)

好的,我找到了一种方法(在我看来并不是特别优雅,但它有效)。在视图中添加了上一个查询 然后做了::

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
为了简单起见,

还必须链接我从这里排除的主键。我认为这几乎就是potatopeelings的建议。

感谢您的帮助,如果有人想到更好的方法,请告诉我,因为我现在非常业余,并且非常了解这一事实