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

Oracle数据库中如何将两行数据合并为一行?

Oracle合并两行数据为一行的解决方法

嘿,这问题我熟!你现在遇到的是典型的行转列场景——之前用GROUP BY material会按物料分组得到两行,要把它们合并到同一行,用条件聚合就能轻松搞定。

核心思路

放弃按物料分组,改用CASE WHEN配合SUM()函数,分别统计每种物料的资源利用率总和,最终把结果放到同一行的不同列中。

示例SQL

假设你的表结构包含material(物料名称)和utilization_rate(资源利用率)列,那么可以这么写:

SELECT
  SUM(CASE WHEN material = '物料A' THEN utilization_rate ELSE 0 END) AS 物料A利用率总和,
  SUM(CASE WHEN material = '物料B' THEN utilization_rate ELSE 0 END) AS 物料B利用率总和
FROM your_table_name;

代码解释

  • CASE WHEN material = '物料A' THEN utilization_rate ELSE 0 END:遍历每行数据,只保留物料A的利用率值,其他行对应位置记为0
  • 外层的SUM()会把所有物料A的利用率累加起来,同理得到物料B的总和
  • 最终两个SUM()的结果会出现在同一行的不同列里,完美匹配你的目标需求

扩展场景:如果有其他维度需要保留

要是你还需要按日期、部门等维度分组(比如统计每天的两种物料利用率总和),只需要把这些维度加到GROUP BY中即可:

SELECT
  record_date,
  department,
  SUM(CASE WHEN material = '物料A' THEN utilization_rate ELSE 0 END) AS 物料A利用率总和,
  SUM(CASE WHEN material = '物料B' THEN utilization_rate ELSE 0 END) AS 物料B利用率总和
FROM your_table_name
GROUP BY record_date, department;

这样就能在每个维度分组下,把两种物料的统计结果合并到同一行啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:57:17