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

如何在SQL中将同表的category与subcategory合并到一列并展示汇总值

解决方案:合并分类与子分类并展示汇总行

没问题,我来帮你实现这个需求!核心思路是通过UNION ALL将分类汇总行和子分类明细行合并,再通过排序规则确保分类行排在对应子分类的前面。

完整SQL代码

-- 生成分类的汇总行
SELECT 
    NEW = catgory,
    Value = SUM(CAST([values] AS INT))
FROM #TEMP
GROUP BY catgory

-- 合并子分类的明细行
UNION ALL

SELECT 
    NEW = sub_category,
    Value = CAST([values] AS INT)
FROM #TEMP

-- 指定排序规则:分类行在前,同一分类下子分类按名称排序
ORDER BY 
    catgory,
    CASE WHEN NEW = catgory THEN 0 ELSE 1 END,
    NEW

代码详细解释

  • 汇总行生成:按catgory分组,对values求和(原表中values是nvarchar类型,必须转换为INT才能计算总和),将分类名称作为NEW列的值。
  • 明细行生成:直接取子分类名称作为NEW列,同时将values转换为数值类型作为Value。
  • UNION ALL合并:用UNION ALL而非UNION,因为两类数据不会有重复行,这样效率更高。
  • 排序逻辑:
    1. 先按catgory排序,确保同一分类的所有行聚在一起;
    2. 用CASE语句标记汇总行(赋值0)和明细行(赋值1),让汇总行优先排在前面;
    3. 最后按NEW列排序,保证子分类按名称有序排列。

执行后预期输出

NEWValue
Bird15
parrot5
pigeon10
Animal7
lion2
Tiger5

注意事项

  • 如果你的真实表中values列已经是数值类型(比如INT),可以去掉CAST([values] AS INT)转换;
  • 注意临时表的列名拼写是catgory(少了一个字母e),如果是笔误,记得改成正确的category。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:05:17