Progress 12.2数据库:如何合并相同ID的行数据
Progress 12.2 实现相同ID行的字符串分组合并
Progress 12.2(OpenEdge)并不支持String_agg、Group_concat这类其他数据库的字符串聚合函数,你可以用以下两种方法实现需求:
方法一:使用OpenEdge SQL内置的LIST()函数
LIST()是Progress OpenEdge SQL专门用于字符串分组聚合的函数,语法如下:
SELECT id, LIST(code, ', ') AS Code FROM table WHERE id = 1 GROUP BY id
- 第一个参数是需要聚合的字段(这里是
code) - 第二个参数是分隔符(这里是
,) - 必须配合
GROUP BY子句按id分组
方法二:使用Progress 4GL代码实现
如果SQL方法受限,也可以用4GL代码循环拼接字符串:
DEFINE VARIABLE cCodes AS CHARACTER NO-UNDO. FOR EACH table WHERE table.id = 1: IF cCodes = "" THEN cCodes = table.code. ELSE cCodes = cCodes + ", " + table.code. END. DISPLAY 1 AS id cCodes AS Code.
内容的提问来源于stack exchange,提问作者JeromeF99
相关产品推荐
相关产品推荐

