聚合函数将多行中的值汇总到一个结果行中

Posted

技术标签:

【中文标题】聚合函数将多行中的值汇总到一个结果行中【英文标题】:Aggregate function to sum values from multiple rows into one result row 【发布时间】:2020-05-06 14:10:17 【问题描述】:

自从我使用 Oracle SQL 数据透视函数以来已经有好几年了,对于这个简短的示例,我无法完全使用它。

我想转换此表中的多个列/行

ID   CLASS   NAME   WHEIGHT
1    2020    Tom    80
2    2020    Tim    100
3    2020    Ben    120

进入这个单一的结果行:

CLASS    LISTAGG_NAMES    SUM_WHEIGHT
2020     Tom,Tim,Ben      300

非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

这不是“枢轴”问题。您不希望每个值都有单独的列。您只想连接它们。使用listagg():

select class, listagg(name, ',') within group (order by weight) as names, sum(weight)
from t
group by class;

【讨论】:

谢谢你,戈登,成功了。我还更改了问题标题

以上是关于聚合函数将多行中的值汇总到一个结果行中的主要内容,如果未能解决你的问题,请参考以下文章

GROUP BY 子句必须与聚合函数一起使用?

如何在单个查询中使用联接和聚合函数更新表中的多行

oracle 列转行

sql 行转列

SQL数据库中聚合函数SUM和COUNT的用法

Reporting Services 使用啥类型的对象将多行传递给自定义聚合函数?