You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中合并同CCSKIYEARDOUBLE对应CCSKIYEAR字段的问题

在Oracle中实现字段合并的正确方案

嘿,你碰到的这个问题挺典型的——GROUP_CONCAT是MySQL特有的聚合函数,Oracle数据库并不支持这个函数,这就是为什么你会收到ORA-00904: "GROUP_CONCAT": invalid identifier的错误提示。

好在Oracle提供了专门的字符串聚合函数LISTAGG,完全可以满足你的需求,下面是具体的解决方法:

修正后的SQL语句

首先注意到你原SQL里的字段名有个小笔误(原始数据里是CCSKIYEARDOULE,你写的是CCSKIYEARDOUBLE),这里已经帮你修正,同时替换成Oracle支持的函数:

SELECT 
    CCSKIYEARDOULE,
    LISTAGG(CCSKIYEAR, ', ') WITHIN GROUP (ORDER BY CCSKIYEAR ASC) AS CCSKIYEAR
FROM CCS2_TBL_KI2
GROUP BY CCSKIYEARDOULE
ORDER BY CCSKIYEARDOULE ASC;

关键细节说明

  • LISTAGG函数的用法:这是Oracle官方推荐的字符串聚合函数,语法结构是LISTAGG(要合并的字段, 分隔符) WITHIN GROUP (ORDER BY 排序字段)。它会把同一个分组内的字段值用指定分隔符拼接起来,还能通过ORDER BY保证拼接后的顺序符合你的要求。
  • 分组逻辑:通过GROUP BY CCSKIYEARDOULE将相同年份区间的记录归为一组,这样就能把每个区间对应的多个年份值合并到一行里。
  • 笔误修正:原始数据中的字段名是CCSKIYEARDOULE,你原SQL里写成了CCSKIYEARDOUBLE,这个小错误也可能导致查询失败,需要注意字段名的一致性。

执行结果验证

运行上面的SQL后,你会得到和你期望完全一致的输出:

CCSKIYEARDOULE | CCSKIYEAR
------------------------------------
92-93          | 92, 93
94-95          | 94, 95
96-97          | 97

内容的提问来源于stack exchange,提问作者N.I.A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:36:12