【问题标题】:DB2 Aggregate FunctionDB2 聚合函数
【发布时间】:2014-04-29 08:07:17
【问题描述】:

我想在 DB2 中创建一个按功能分组的视图。不确定 SQL 语句是否能够创建这样的视图。

数据:

TableId   department    item
1         dept1         item1
2         dept2         item1
3         dept1         item1
4         dept2         item1

查看输出:

department    item     id
dept1         item1    1,3
dept2         item1    2,4

我能够创建一个按部门和项目分组的视图,但不确定如何在视图中组合表格。

寻求建议。

非常感谢。

【问题讨论】:

  • 据我所知,在 DB2 中没有像在 MYSQL 中那样简单的解决方案,即GROUP_CONCAT() 函数,但我在这里找到了解决方案:vertabelo.com/blog/group-concat。希望对您有所帮助。
  • 这可以通过 OLAP 函数来完成。
  • 您在哪个平台上运行 - LUW、iSeries 和 z/OS?你打算用聚合的 id 做什么?请注意,在大多数情况下,自动增量 id 的值应该是无意义的......

标签: sql db2


【解决方案1】:

您可以使用 LISTAGG 函数来做到这一点。使用方法请看这篇文章:https://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/listagg?lang=en

select department, listagg(TableId, ',') within group (order by TableId) as id
from YourTable
group by department; 

欲了解更多信息:http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0058709.html

您也可以使用 XMLCast + XMLGroup:https://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/aggregating_strings42?lang=en

【讨论】:

  • LISTAGG 是在 9.7.x 版本中引入的。仅供参考。
猜你喜欢
  • 1970-01-01
  • 2017-07-10
  • 1970-01-01
  • 2021-04-07
  • 1970-01-01
  • 2012-08-07
  • 2014-02-25
  • 2022-01-11
  • 1970-01-01
相关资源
最近更新 更多