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

如何聚合行并创建透视表?寻求最优实现方法

最佳实现方案:SQL条件聚合

嘿,这是个典型的行转列(Pivot)场景,最通用且高效的实现方式就是用条件聚合。这种写法不挑数据库,MySQL、PostgreSQL、SQL Server、Oracle这些主流库都能直接跑,兼容性拉满,比依赖特定数据库的PIVOT语法灵活多了。

直接上可运行代码

SELECT
    Start,
    End,
    SUM(CASE WHEN Unit = 'KB' THEN Measure ELSE 0 END) AS KB,
    SUM(CASE WHEN Unit = 'MB' THEN Measure ELSE 0 END) AS MB,
    SUM(CASE WHEN Unit = 'GB' THEN Measure ELSE 0 END) AS GB
FROM
    你的原表名称 -- 记得替换成实际表名
GROUP BY
    Start, End
ORDER BY
    Start, End;

代码逻辑拆解

  • 分组归并:GROUP BY Start, End把同一个区间(Start+End组合相同)的行打包成一组,这是实现分组求和的基础。
  • 条件求和:对每个目标列(KB/MB/GB),用CASE判断当前行的Unit是否匹配——匹配就取Measure的数值,不匹配就填0,再用SUM把组内的数值累加,正好满足“对应Unit的Measure值求和,无对应值填0”的需求。
  • 排序优化:最后加ORDER BY是为了让结果和你给出的示例顺序完全一致,实际使用时可以根据需求调整或者直接去掉。

验证结果

把你提供的原表数据代入执行后,得到的结果完全符合预期:

StartEndKBMBGB
0105042
0610002

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:54:25