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

OracleSQL如何将两条指定记录求和合并为新记录展示

现有语句的问题

  1. 逻辑判断错误:CASE WHEN bu='IT' and bu='InfoSec'永远不成立,单条记录的bu字段不可能同时等于两个不同值,应该用IN或者OR做包含判断。
  2. 缺少聚合逻辑:单纯做字段映射不会自动合并行,需要搭配GROUP BY分组和SUM聚合函数对数值字段求和。
  3. 未处理flag字段:合并后的记录flag为2,需要先把IT记录的flag从3统一映射为2,才能分到同一组。

调整后的SQL语句

WITH bc AS (
    SELECT
        date,
        -- 统一需要合并记录的flag值
        CASE WHEN bu IN ('InfoSec', 'IT') THEN 2 ELSE flag END AS flag,
        -- 统一合并后的bu名称
        CASE WHEN bu IN ('InfoSec', 'IT') THEN 'InformationTechnology' ELSE bu END AS bu,
        volume,
        calls
    FROM table1
)
SELECT
    date,
    flag,
    bu,
    SUM(volume) AS volume,
    SUM(calls) AS calls
FROM bc
GROUP BY date, flag, bu
ORDER BY flag

逻辑说明

  • 先在CTE中将InfoSec和IT两类记录的flag、bu都映射为相同的值,确保后续分组时这两类会被归为同一组
  • 分组后对volume和calls字段求和,即可得到合并后的累加值
  • 最终按flag排序后和预期输出顺序完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:57:02