如何将多行转换为不同的列?

Posted

技术标签:

【中文标题】如何将多行转换为不同的列?【英文标题】: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标记。 查看右边缘的“相关”答案列表。 【参考方案1】:

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

【讨论】:

以上是关于如何将多行转换为不同的列?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 将多行转置到不同的列

将谷歌电子表格行值转换为不同工作表中的列

将带有 json 字符串的数据框列转换为不同的列

使用 Spark Dataframe scala 将多个不同的列转换为 Map 列

如何使用c#中的不同值更新数据库中的多行?

是否有可能在Oracle中有条件地透视不同数据类型的列?