当它们具有相同的 id 但不同的列值时,我试图将它们合并为一个。
例如 :
(table1)
id colour
1 red
1 blue
2 green
2 red
我希望将其结合起来,以便结果是:
id colour1 colour2
1 red blue
2 green red
或者
id colour
1 red, blue
2 green, red
或上述的任何其他变体,以便以某种方式将行连接在一起。
任何帮助,将不胜感激!提前致谢。
原文由 LEJ 发布,翻译遵循 CC BY-SA 4.0 许可协议
请先阅读我的评论-您甚至不应该考虑这样做,除非它仅用于报告目的,并且您想看看如何在普通 SQL 中完成此操作(而不是正确的解决方案,即使用您的报告这项工作的工具)。
第二种格式最简单,特别是如果您不关心颜色出现的顺序:
order by null
表示随机订购。如果您想通过其他方式订购,请在order by
和listagg()
中使用它。例如,要按字母顺序排列颜色,您可以说within group (order by colour)
。对于第一种格式,您需要对列数有一个先验限制,并且如何做到这一点取决于您使用的 Oracle 版本(您应该始终将其包含在您在此处和其他讨论板上发布的每个问题中)。这个概念被称为“枢轴”;从版本 11 开始,Oracle 有一个可以使用的显式 PIVOT 运算符。