如何通过ROLLUP在SQL中实现多级明细与汇总行同时展示?
- 内容介绍
- 相关推荐
本文共计688个文字,预计阅读时间需要3分钟。
使用 `` 和 `` 标签改写如下:
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 生成的 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。

