【问题标题】:How to convert multiple rows into different columns?如何将多行转换为不同的列?
【发布时间】:2013-12-18 15:02:38
【问题描述】:

我有如下原始数据

UserId Email Name Age
101    abc   xyz  30
101    def   xyz  30
101    ghi   xyz  30

并寻找如下输出

UserId Email1 Email2 Email3 Name Age
101    abc    def    ghi    xyz  30

原始数据可能有单封或多封电子邮件,所以我试图找到一种通用的方法。现在我正在努力完成它。非常感谢任何帮助。

【问题讨论】:

  • 假设另一个用户将有 2 封电子邮件和另外 5 封电子邮件 - 这会有点棘手。也许是一个存储过程,它创建一个临时表,其中包含足够的字段来存储用户拥有的最多电子邮件。
  • 您知道任何用户可以预先拥有的最大电子邮件数量(设计时)吗?
  • 也许,我正在尝试类似的方法
  • 既然你用PL/SQL标记了你的问题,我也添加了Oracle标记。
  • 查看右边缘的“相关”答案列表。

标签: sql oracle pivot


【解决方案1】:

检查listagg function。它不会为您提供真正的列,但您可以通过相应地格式化输出来使其看起来像它所做的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    相关资源
    最近更新 更多