我有一个包含两个字段的表
DATE_YYYYMM 总计
该表包含全年的每月累积总数。 我想要一个查询来检索每个月的“未累计”总数。
例如,201806的总数等于201806的总数减去201805的总数。
请给我小费吗?谢谢!
答案 0 :(得分:1)
窗口函数LAG可用于基于订单获取先前的值。
看来您只想从总数中减去上个月的总数。
SELECT
DATE_YYYYMM,
TOTAL,
TOTAL - ISNULL(LAG(TOTAL) OVER (ORDER BY DATE_YYYYMM), 0) AS UNACCUMULATED
FROM YourYearTotalsTable
答案 1 :(得分:0)
您可以使用分析功能LAG(从sql-server-2012开始)将当前行中的值与上一行中的值进行比较。
SELECT
[date_yyyymm]
,[current_total] = [total]
,[previous_total] = LAG([total], 1, 0) OVER (ORDER BY [date_yyyymm])
,[unacumulated] = [total] - LAG([total], 1, 0) OVER (ORDER BY [date_yyyymm])
FROM [your_table]
ORDER BY [date_yyyymm];