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

Oracle SQL查询:如何按客户逐行汇总总计?

解决Oracle SQL逐行汇总多列数值的问题

你要的是行内列值直接相加,不是分组聚合操作,所以根本不需要用SUM函数(SUM是用来对多行数据分组求和的,不是单行列之间的计算)。

直接把三个列的数值加起来就行,为了避免某列值为NULL导致结果为NULL,可以用NVL函数把NULL转成0,最终的SQL脚本如下:

SELECT 
    customer,
    NVL(car, 0) + NVL(truck, 0) + NVL("4WD", 0) AS has_item
FROM 
    your_table_name;

为什么你之前的方法行不通:

  • SUM(CASE...):SUM是聚合函数,默认会把所有行当成一个组求和,就算加了GROUP BY也是多此一举——行内直接相加比CASE+SUM的写法简洁太多,而且你之前的CASE逻辑when xx then x else x等于没做任何判断,自然出问题。
  • sum(rownum):rownum是每行的系统行号,sum(rownum)会把所有行的行号累加,和你要的客户车辆总数完全不相关,当然得不到正确结果。

用上面的SQL查询你的示例数据,就能得到你期望的结果:

customerhas_item
Albert2
Joe1
Catherine1
Mark4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:15:31