当前位置: 首页 > 面试题库 >

db2中的Listagg替代品

葛炯
2023-03-14
问题内容

我的客户正在使用不带listagg功能的db2数据库,但是我需要以某种方式在一个字段中聚合主键信息。

现在(对于Oracle),我正在将其用作更大查询的一部分:

SELECT LISTAGG(COLUMN_NAME || ':' || CONTENT, ',') 
WITHIN GROUP (ORDER BY COLUMN_NAME || ':' || CONTENT) 
FROM TABLE
WHERE ROW_IDENTIFIER_ID = I.REC_ID AND I.TABLE_RESULT_ID = T.REC_ID

从9.7 Fix Pack4版本1开始,还有另一种方法可以在DB2之前的db2数据库中获取listagg函数的结果。

客户数据库的版本:Linux-企业服务器版本9.7,发行号08060107
我通过执行以下选择获得了它:

SELECT * FROM TABLE(SYSPROC.ENV_GET_INST_INFO()) AS SYSTEMINFO;
SELECT * FROM TABLE(SYSPROC.ENV_GET_PROD_INFO()) AS SYSTEMINFO;
SELECT * FROM TABLE(SYSPROC.ENV_GET_SYS_INFO()) AS SYSTEMINFO;

我承认我不明白,怎么可能是9.7,但是没有listagg函数?:使困惑:

我也执行了:

SELECT * FROM SYSCAT.FUNCTIONS

我返回了此函数列表,但答案中没有其他解决方案中提到的诸如xmltext或xmlgroup之类的函数:(。客户使用的是哪个穴居人数据库?还是我缺少什么?

感谢您的答复。


问题答案:

如果您的DB2版本支持pureXML(至少是DB2 for LUW 9.1,并且我相信DB2 9 for z / OS),除了上面建议的@
PM77-1之外,还可以使用XMLAGG函数:

select xmlserialize(
  xmlagg(
    xmlconcat(
      xmltext(column_name),
      xmltext(':'),
      xmltext(content),
      xmltext(',')
    )
  ) as varchar(10000)
) 
from 
  yourtable 
...


 类似资料:
  • 问题内容: 我是Oracle的新手。卡在下面:我有下面的2表: 地点: 人们: 现在在我的查询中,我想要这样的输出: 还有几点: -该解决方案应该在Oracle 10g和11g中都可以使用。 -为简洁起见,我在上面的示例中给出了一小部分数据,但是在我的产品场景中,一个Person可以与1000+个位置相关联,并且可以有1000+个这样的人,因此在这种情况下解决方案应该不会失败! 任何帮助将不胜感激

  • 问题内容: listagg是Oracle 11.2中引入的功能!现在,此功能正在分配给我们,我们正在从MySQL迁移到Oracle,我们有以下查询: 据我们所知,Oracle在MySQL下工作正常,在MySQL下运行良好,它会根据需要返回VARCAR而不是CLOB! 文本很大,我们确实需要CLOB ! 这是我试图做的! 创建一个CLOB类型的CLOB_T表! 然后创建函数 现在,如果我运行它: 我

  • 问题内容: 我正在尝试在SQLServer中聚合“ STRING”字段。我想找到与Oracle中相同的函数LISTAGG。 您知道如何执行相同的功能或其他方法吗? 例如, 我希望这个查询的结果是 问题答案: 从SQL Server 2017开始,该功能可用,从而大大简化了逻辑: 在SQL Server中,您可以用来获取结果:

  • 问题内容: 问题 在解决这个问题之后,似乎基于文件或磁盘的实现可能是解决我在此处提到的问题的正确解决方案。精简版: 目前,我已将实施为。 条目以相当固定的速率连续添加到其中。稍后对此进行详细说明。 最终,无论如何,这意味着JVM耗尽了堆空间。 在工作中,(强烈)建议我使用SQLite解决此问题,但是在问了上一个问题之后,我认为数据库不是适合此工作的合适工具。所以- 让我知道这听起来是否疯狂 -我认

  • 问题内容: 这是一个从来没有一个正确答案的问题,我已经在网上搜索了很多次,却找不到解决方案。 它适用于Firefox,Chrome。我的responseText将像Réunion这样返回char,它将显示为奇怪的符号。 我尝试了许多方法,例如编码和解码,在响应文件中设置标头都无效。我没主意了。请帮助某人。 在主文件中,确保设置了内容类型和字符集。 在您的AJAX加载页面中,确保您位于顶部。 问题解

  • 我一直在通过Netbeans使用CodeNameOne设计一个应用程序,并遇到了一些问题,特别是“找不到符号”编译错误。经过进一步的研究,我发现这是由于CNO不支持某些库/杂项。 我想知道是否有其他方法可以使用以下库/执行任务: (从文件读取)导入java.io.file;符号:类文件位置:package java.io (抛出FileNotFoundException)导入java.io.Fil