SQL开窗函数-逐层累计

楼主
我是社区第238588位番薯,欢迎点我头像关注我哦~
1. 环境

注意事项:由于 9.0 设计器内置的是 Sqlite 数据库,在使用上很多语法都不支持,请将 Sqlite 数据库文件迁移到主流数据库(MySQL、MSSQL、Oracle…)后运行。

迁移方法:使用第三方软件迁移内置 FRDemo 数据库到指定数据库

本文运行环境:Microsoft SQL Server 2012 - 11.0.2100.60 (X64)

                       Copyright (c) Microsoft Corporation

                       Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)


2. 描述

对于一些数据表,我们想对每一组中将每层与上一层数据相加,得到这一层的累计结果,考虑到效率问题,不想在模板中进行单元格设置,此时我们就需要在建立数据集时直接通过 SQL 处理,如下图所示的年度累计:



3. 思路

ROW_NUMBER() OVER ()



4. 示例4.1 准备数据

打开软件自带的 FRDemo 库中的【大陆汽车销售】表:



4.2 逐层累计 SQL

SELECT t.*,sum(t.销量) over(PARTITION BY t.年份 order by t.月份) as 年度累计 FROM 大陆车辆销售 t;


4.3 效果预览

执行上述 SQL 语句,效果如下:


注 1:此方法是在数据集中直接进行了 SQL 处理实现逐层累计,后续可直接调用字段。

注 2:在单元格中实现逐层累计请参考:逐层累计


分享扩散:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表