【发布时间】: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 的列,为了简单起见,我只是将它们命名为在查询中给 stackoverflow 的名称。