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

如何在Oracle的Pivot语句中添加行总计?

解决Pivot查询添加行总计的问题

嗨,这事儿好办!你只需要在Pivot后的查询里直接把统计出来的worker和manager列相加,就能得到每行的总计啦。我帮你优化了原SQL,不仅实现了需求,还让代码更易读:

SELECT 
    STATUS,
    worker,
    manager,
    worker + manager AS Total
FROM (
    -- 只选需要的列,避免冗余数据,提升效率
    SELECT STATUS, title 
    FROM ta
) 
PIVOT (
    COUNT(title) 
    -- 给pivot生成的列起别名,不用带单引号,方便后续引用
    FOR title IN ('worker' AS worker, 'manager' AS manager)
)

为什么这么改?

  1. 优化子查询:原语句里的select *会把表中所有列都带入pivot,但我们只需要STATUS和title来统计,所以只选这两列更高效。
  2. 列别名处理:在PIVOT的IN子句里给每个title值指定别名(比如'worker' AS worker),这样生成的列名是干净的worker和manager,不用处理带单引号的特殊列名。
  3. 计算行总计:直接把worker和manager的数值相加,命名为Total,就得到了每行的统计总和。

执行后你会得到期望的结果:

STATUS worker manager Total
started 3 1 4
finished 4 5 9
ready 3 4 7

如果你不想修改pivot里的别名,也可以直接引用原带单引号的列(注意要用双引号包裹),SQL如下:

SELECT 
    STATUS,
    "'worker'",
    "'manager'",
    "'worker'" + "'manager'" AS Total
FROM (
    SELECT * FROM ta
) 
PIVOT (
    COUNT(title) 
    FOR title IN ('worker', 'manager')
)

不过还是更推荐第一种写法,代码可读性更高哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:07:29