如何通过ROLLUP在SQL中实现多级明细与汇总行同时展示?

2026-04-30 13:561阅读0评论SEO问题
  • 内容介绍
  • 相关推荐

本文共计688个文字,预计阅读时间需要3分钟。

如何通过ROLLUP在SQL中实现多级明细与汇总行同时展示?

使用 `` 和 `` 标签改写如下:

ROLLUP 生成的 NULL 到底是什么意思

它不是字段值缺失,而是该层被“上卷”掉的占位符。比如 GROUP BY ROLLUP(dept, team) 中:

  • dept = '研发部', team = '前端组' → 明细行(两列都有值)
  • dept = '研发部', team = NULL → 小计行(team 被上卷,只保留 dept)
  • dept = NULL, team = NULL → 总计行(dept 和 team 全被上卷)

如果直接 WHERE team IS NULL 过滤,会把“team 原本就为空”的真实数据和“team 被上卷”的小计行一起干掉。必须用 GROUPING(team) 来区分:返回 1 才是上卷产生的 NULL。

阅读全文

本文共计688个文字,预计阅读时间需要3分钟。

如何通过ROLLUP在SQL中实现多级明细与汇总行同时展示?

使用 `` 和 `` 标签改写如下:

ROLLUP 生成的 NULL 到底是什么意思

它不是字段值缺失,而是该层被“上卷”掉的占位符。比如 GROUP BY ROLLUP(dept, team) 中:

  • dept = '研发部', team = '前端组' → 明细行(两列都有值)
  • dept = '研发部', team = NULL → 小计行(team 被上卷,只保留 dept)
  • dept = NULL, team = NULL → 总计行(dept 和 team 全被上卷)

如果直接 WHERE team IS NULL 过滤,会把“team 原本就为空”的真实数据和“team 被上卷”的小计行一起干掉。必须用 GROUPING(team) 来区分:返回 1 才是上卷产生的 NULL。

阅读全文