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

Oracle SQL:将按T.ID分组的状态统计结果合并为单行输出

解决方案

你需要分两步处理:先统计每个ID下各状态的数量,再把同一ID的统计结果合并成单行。

修正后的SQL代码

SELECT ID, LISTAGG(STATUS_COUNT, ', ') WITHIN GROUP (ORDER BY STATUS) AS RESULTS
FROM (
    -- 先按ID和状态分组,统计每个状态的数量,生成类似"C:2"的字符串
    SELECT T.ID, T.STATUS || ':' || COUNT(T.STATUS) AS STATUS_COUNT
    FROM TRANSACTION T
    GROUP BY T.ID, T.STATUS
)
-- 再按ID分组,用LISTAGG合并所有状态统计字符串
GROUP BY ID
ORDER BY ID;

说明

  1. 子查询先完成按ID+状态的分组统计,得到每个ID下各状态的计数字符串(比如"S:3");
  2. 外层查询只按ID分组,用LISTAGG函数把同一个ID的所有状态统计字符串用, 连接起来,得到单行结果;
  3. WITHIN GROUP (ORDER BY STATUS)可以保证合并后的字符串按状态排序,不需要排序的话可以去掉这部分。

执行后会得到和示例一致的输出:

IDRESULTS
1000C:1
1231C:2, E:1, S:3

内容的提问来源于stack exchange,提问作者Sean Whiting

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 17:52:44