基于Month列计算上月对应度量值的技术实现咨询
计算上月对应度量值的简便实现方案
直接用**窗口函数LAG()**就能实现,不需要关联表或新增辅助列,这是最简便的方式。
核心逻辑
按Product分组,在每个产品组内按Month排序,取当前行的上一行(即上月)的Measure值。如果是组内第一行(比如示例中的4月),返回指定默认值(比如'-'或NULL)。
代码示例(SQL/BI工具通用写法)
SELECT Product, Month, Measure, LAG(Measure, 1, '-') OVER (PARTITION BY Product ORDER BY Month) AS "Calculation (measure from month -1)" FROM 你的数据集表名
说明
LAG(Measure, 1, '-'):第一个参数是要获取的目标列,第二个参数是向前偏移的行数(这里取1行即上月),第三个参数是当没有上一行时返回的默认值;PARTITION BY Product:确保只在同一个产品的范围内计算上月值;ORDER BY Month:保证月份按顺序排列,确保取到的是真正的上月数据。
如果你的BI工具(比如Cognos数据模块)支持窗口函数,直接在新增计算列时套用这个逻辑即可,无需额外操作。
内容的提问来源于stack exchange,提问作者Artur Fröhlich
相关产品推荐
相关产品推荐

